自己的理解23种设计模式
总体来说设计模式分为三大类:
创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
结构型模式,共七种:适配器模式、装饰模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
而以下是我自己的理解
工厂方法模式:对于某个产品,调用者清楚地知道应该使用哪个具体工厂服务,实例化该具体工厂,生产出具体的产品来,并不需要知道是怎么生产的。只是需要一种产品,而不想知道也不需要知道究竟是哪个工厂为生产的,即最终选用哪个具体工厂的决定权在生产者一方,它们根据当前系统的情况来实例化一个具体的工厂返回给使用者,而这个决策过程这对于使用者来说是透明的。
抽象工厂模式:在上述工厂模式的基础上增加了抽象的接口,使得工厂更好创建
单例模式:某个类只能有一个实例,并且它自行创建这个实例,自行向整个系统提供这个实例。
建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示(没看懂)
原型模式:最开始有一个模板,复制过来修改了就能用。
适配器模式:将类自己的接口包裹在一个已存在的类中,就是在别的方法中实例化一下自己。
装饰模式:创建两个对象,一个真实一个是他的装饰,想要扩展功能只需要在其中装饰的对象修改就行。
代理模式:由抽象角色,代理角色,真实角色,角色组成。抽象是一个接口或抽象类,那两个实例化抽象角色在代理上修改。
外观模式:为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用。在所有方法之上定义一个接口,只修改接口。
桥接模式:存在于多个实体中的共同的概念性联系,抽象化给出的具体实现,将两个十实例的关联弱化。
组合模式:在系统目录结构,网站导航结构上运用。
享元模式:它使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件;它适合用于只是因重复而导致使用无法令人接受的大量内存的大量物件。通常物件中的部分状态是可以分享。常见做法是把它们放在外部数据结构,当需要使用时再将它们传递给享元。
策略模式:定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。
模板方法模式:穿件一个模板 不用每次都重新创建了。
观察者模式:此种模式通常被用来实现事件处理系统,一个对象发生改变,所有依赖于它的事件得到通知并改变。
迭代子模式:提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示
责任链模式:很多对象由每一个对象对其下家的引用而连接起来形成一条链,当用户发出一个请求,在链上得到响应。
命令模式:对命令进行封装,将发出命令的责任和执行命令的责任分割开
备忘录模式:在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。
状态模式:允许一个对象在其内部状态改变时改变它的行为
访问者模式:把数据结构和作用于结构上的操作解耦合,使得操作集合可相对自由地演化
中介者模式:通过另外的对象来实现一个对象到另一个对象的请求。
解释器模式:对请求进行解释。