设计模式之大话西游

发布于:2024-04-15 ⋅ 阅读:(169) ⋅ 点赞:(0)

    8年前深究设计模式,现如今再次回锅~ 还是大话设计模式 这本书还是可以的

    大话西游经典的台词:“曾经有一份真挚的爱情摆在我面前,我没有珍惜,等我失去的时候,我才后悔莫及,人世间最痛苦的事莫过于此。如果上天能够给我一个再来一次的机会,我会对那个女孩子说三个字:我爱你。如果非要在这份爱上加上一个期限,我希望是一万年!” 当然这是强蹭流量 没有关系

设计模式最重要的看懂那几个线:

https://www.cnblogs.com/itc0z0sti/p/3309584.html 

简单工厂 

super调用 factory中createCashAccept具体:

   case "":

   case "":

   default: 

策略:封装变化 匹配女神

单例 

spring  enum 基础之重蹈覆辙-CSDN博客

代理

调用代理类 代理类调用真实对象方法 两者都实现了一个接口

原型:不知不觉ing 注意

浅克隆:实现cloneable接口 重写clone方法,引用类型 只克隆引用 同一块地址

深克隆:基本数据类型和引用类型指向的对象都会被复制,真正的复制一份,重新开辟空间保存

  重写clone,clone嵌套clone,对象 引用类型变量的类 均实现cloneable接口

  序列化流:对象 引用对象都序列化

首先创建ByteArrayOutputStream内存数组输出流,创建ObjectOutputStream序列化流,并传入内存数组输出流,使用序列化流的writeobject方法将要序列化的对象写入内部数组中
创建一个ByteArrayInputStream内存数组读取流,传入一个读取数据的数组,这个数组通过内存数组输出流的toByteArray方法获得,这个数组里面的数据其实就是已经被序列化成二进制数据的对象
最后创建一个ObjectInputStream反序列化流,并传入内存数组读取流,使用反序列化流的readobject方法将数组中的对象的信息,反序列化出来。
反序列化出的对象就是一个新的对象,完成了深克隆。
当然还可以固定要被序列化对象的版本号,定义一个private static final long serialVersionUID
注意静态的成员和transient关键字修饰的成员不能被序列化

  开源工具:json  spring的BeanUtils  Cglib的BeanCopier 

Java中的深克隆和浅克隆的原理及三种方式实现深克隆_浅克隆和深克隆的实现-CSDN博客

适配器

 

装饰器

 

HttpServletResponseWrapper

 桥接 抽象实现分离

外观

享元 缓存共享对象

外部对象随环境改变而改变 / 内部对象可共享

组合 对象组合成层次结构

模板

命令

责任链

FilterChain    Filter

状态

对象行为

观察者

 当更改一个对象的状态可能需要更改其他对象,并且实际的对象集事先未知或动态更改时

JDK:java.util.Observable

Spring:org.springframework.context.ApplicationListener

中介者

迭代器

简化聚合,定义迭代器 很少用

访问者

 扩展   复用

备忘录

解释器


网站公告

今日签到

点亮在社区的每一天
去签到