设计模式: 管理变化,提高复用
重构技法: 静态—>动态,早绑定—>晚绑定,继承—>组合,紧耦合—>松耦合,编译时依赖—>运行时依赖
关注抽象类和接口,良好的设计是演化过来的
利用好多态 变化;关注稳定点和变化点
绝大多数设计模式 就是编译时候复用,变化 需求的变化用多态放到运行时!
其实就是那个pojo 包装类,把一些类包装到另一个类里面!
一个对象的类型往往应该抽象成抽象类或者接口 ,如果是具体类 那么没有变化,要盯住这个变化!抽象基类 面向抽象接口编程 最显著的就是 变量要声明成抽象基类;应该依赖抽象 而不是依赖实现细节,编译时依赖
解决稳定中有变化!
克隆原型,得到新对象
和模版方法模式很相似!!
运用共享技术解决大粒度对象 java里的string, 线程池 其实就是线程池的那种方式,用一个map 如果有就返回 没有就创建并且加入
间接思维很重要!添加一层间接的稳定接口
高内聚松耦合,系统内和系统外
不能直接去调用那个类,由于某些原因,分布式 或者安全原因,必须包装起来,用一个代理接口去访问; 增加一层间接层; 两个对象,本来可以互相依赖的,但是由于性能关系,必须拆开
将一个老的接口转成一个新的接口,希望复用一些现有的类,但是接口又与复用环境要求不一致的情况; 老接口和新接口不匹配,对老接口进行转换,建立一个类,继承新接口,然后组合接口,完成转换逻辑
用一个中介对象去封装一系列的多个对象交互(封装变化),对象出现复杂的引用关系。 编译时依赖—>运行时依赖,可以独立他们的交互
状态改变,行为也会随之改变; 和策略模式很像 设计模式之间会越来越像!
对象在转换过程中,可能需要回溯到原来的状态,捕获内部状态 这个现在用的不多,核心是信息隐藏,现在一般会使用序列化这种效率比较高的方式实现
组合成树形结构,使得用户对单个对象和组合对象的处理具有一致性,稳定。
外部客户透明的访问集合里面的对象,且不暴露对象内部表示 多态 面向对象 运行时多态性能低于编译时多态
一个请求可能被多个对象接受,最终只有一个处理,避免发送者和接受者过多耦合,将对象连成一条线进行处理,也就是一个链表,沿着链来处理请求,直到能处理这个问题位置
将行为对象化,可以对行为命令进行组合,通过运行时的多态,java里面应用很广!