设计模式的理论理解

提高软件高效性、可维护性以及灵活性,简单对常见的设计模式进行理论上的自我总结:

java设计模式:
一:单例模式:某个类只能生成一个实例,该类提供全局访问点供外部获取该实例。
Singleton主要有两种实现形式:
1.懒汉式单例:在类加载的时没有生成单例,只有当第一次调用时才会去创建这个单例。
2.饿汉式单例:在类加载的时候就创建一个单例。保证在调用getInstance方法的时候就存在。


二:工厂模式:定义一个用于创建产品的接口,由子类决定生产什么产品。
1.用户只需知道具体工厂的名称就可以得到所需要的产品,无须知道产品的具体创建过程。
2.在系统增加新的产品时只需要添加具体的产品类和对应的具体工厂类,无须对原工厂进行任何修改,满足开闭原则。


三:抽象工厂模式:提供一个创建产品族的接口,其每个子类可以生产一系列相关的产品。
1.满足条件:系统有多个产品族,每个具体工厂创建同一族但是等级不同(具体的结构属性不一致)的产品。


四:适配器模式:将一个类的接口转化为客户希望的另一个接口,使得原本由于接口不兼容而不能在一起工作的那些类能一起工作。


五:装饰者模式:动态的给对象添加一些职责,即增加其额外的功能。
附加理解:软件开发中有时组件只是完成了一些核心功能的实现,但是在不影响其原本的功能的情况下,可以动态的拓展其所需的功能。


六:观察者模式:对个对象间存在一对多的关系,当一个对象发生改变时,把这种改变通知给其他多个对象,从而影响其他对象的行为。
此模式又称为发布-订阅模式、模型-视图模式,属于对象行为模式。例如:微信公众号和微信用户


七:代理模式:为某一个对象提供一种代理以控制对该对象的访问,即客户端通过代理间接地访问该对象,从而限制、增强或者修改该对象。
附加理解:访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标之间的中介。例如:购买火车票,可以通过代售点购买等。


八:策略模式:定义一系列的算法,并将每个算法封装起来,使他们之间可以相互替换,且算法的改变不影响使用算法的客户。
比如:出行旅游选择交通工具有很多种选择方法:火车、飞机等。


九:外观模式:为多个复杂的子系统提供一个一致的接口,使这些子系统更加容易被访问。
举例理解:客户需要去办理房产证,需要去不同的部门办理杂七杂八的手续,此时需要一个综合的部门就可以方便的实现。

原文地址:https://www.cnblogs.com/wlm-boke/p/13371756.html