1.简单工厂模式
该类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化的相关的类,对于客户端来说,去除了与具体产品的依赖。
2.策略模式(strategy)
定义了算法家族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化,不会影响到使用算法的客户。
特点:算法本身是一种策略,算法随时都可以互相替换
3.装饰模式
装饰模式是为已有功能动态地添加更多功能的一种方式,以装扮为例,装饰模式把每个装饰的功能放在单独的类中,让这个类包装它所有装饰的对象,客户代码可以在运行时根据需要有选择地、按顺序地使用装饰功能包装对象。而不需要增加主类的复杂度。
4.代理模式
代理就是真实对象的代表
Subject类,定义了RealSubject(真实主题)和Proxy(代理)的共用接口,这样就在任何使用RealSubject的地方都可以使用Proxy。
使用场景:1.远程代理,为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在
于不同地址空间的事实。
2.虚拟场景·,是根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真是对象。
3.安全代理,用来控制真实对象访问时的权限。
4.智能指引,是指当调用真实的对象时,代理处理另外一些事。
5.工厂方法模式(Factory Method)
定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类延迟到其子类。
6.原型模式(Prototype)
解决多次实例化同一个类
原型模式是从一个对象再创建另外一个可定制的对象,而且不需知道任何创建的细节。
(让一个原型克隆自身从而创建一个新的对象)
同时又分深拷贝和浅拷贝,齐纳拷贝只复制结构,不复制数据,而深拷贝即复制结构又复制数据;
7.模板方法模式
定义一个操作中的算法的骨架,而降一些步骤延迟到子类中;
模板方法提供了一个很好的代码复用平台。
8.迪米特法则(LoD)
如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。
9.外观模式
外观模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
10.建造者模式(生成器模式)
建造者模式(Builder),将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。该模式可以将一个产品的内部表象与产品的生成过程分割开来。用户只需要指定需要建造的类型就可以得到它们,而具体建造的过程和细节就不需要知道了。
11.观察模式(发布-订阅(Publish/Subscribe)模式)
观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能自动更新自己。