设计模式

1、设计模式分类:

  • 创建型模式,共五种:
    工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
  • 结构型模式,共七种:
    适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
  • 行为型模式,共十一种:
    策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

2、适配器模式:

优点和应用场景:

复用性:系统需要使用现有的类,而此类的接口不符合系统需要。那么可以通过适配器模式将这些功能更好的复用。
扩展性:在实现适配器功能的时候,可以自己定义想要的方法而不改变原来的类,从而自然的扩展系统的功能。

类适配器和对象适配器区别

类适配器,由于是继承,所以无法和源类的子类一起工作,而对象适配器可以把源类和它的子类都适配到目标接口。
类适配器可以重新定义父类的部分方法,而对象适配器就比较困难。
尽量使用对象适配器,多用 合成/聚合,少用继承。

3、代理模式:

定义及应用场景:

为其他对象提供一种代理以控制对这个对象的访问,替原对象进行一些操作,比如中介;如果已有的方法在使用时需要对原方法进行改进,比如前置检测,后置记录日志,这个时候使用代理类。

java动态代理

如果代理类程序运行前并不存在,需要在程序运行时动态生成(无需收工编写代理类源码),这时候就用动态代理
如何生成:根据java的反射机制动态生成的。
Proxy.newProxyInstance(ClassLoader loader,Class<?>[] interfaces,InvocationHandler handler);
Spring的AOP就是典型的动态代理应用。

4、观察者模式:

解决的问题和应用场景

定义对象间的一种一对多的依赖关系,当一个对象的状态发生变化时,所依赖它的对象得到通知并被自动更新。此模式通常用来处理事件处理系统。
通知代替轮询。解耦观察者和被观察者,避免直接调用。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容