一、 设计模式的分类:
创建型设计模式(5):
工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式
结构型设计模式(7):
适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式
行为型设计模式(11):
策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式
其他:(并发型模式、线程池模式)二、设计模式的原则
开闭原则
程序扩展开放,修改关闭,意思就是在增加新功能的时候可以在不修改原来代码的基础上实现,达到热插拔的效果
里氏代换原则
该原则是对开闭原则的补充,实现开闭原则的关键步骤就是抽象化,该原则就是对实现抽象化的具体步骤的一个规范
依赖倒转原则
依赖于抽象不依赖与具体,是开闭原则的基础
接口隔离原则
使用多个隔离接口,降低类之间的耦合度
迪米特法则
一个实体尽量少的与其他实体之间发生相互作用,使系统功能模块之间独立起来
合成复用原则
尽量使用合成/聚合的方式,不是使用继承
工厂方法模式
该模式有三种:
普通工厂模式:建立一个工厂类,对实现同一个接口的类进行实例的创建;通过传递参数来返回不同的实现类;以灯泡为例,灯泡发光是一个接口,不同颜色的灯泡发光是不同的实现类,再创建一个灯泡发光的工厂方法,通过给这个工厂方法传递不同的颜色来返回不同的灯泡实体类;这样就可以实现解耦合
多个工厂方法模式:由于普通工厂模式是靠那个参数传递返回相应的实现类,为了避免这个参数传递错误的问题,就该用为多个工厂方法来返回相应的实现类;
静态工厂方法模式:该模式就是将多个工厂方法设计成静态的,用static方法修饰,这样不需要创建实例,直接调用即可;
总结:凡是出现大量的产品需要创建时,并且具有相同接口时,可以通过工厂方法模式进行创建;
三种模式的比较:
第一种模式,参数传递错误,对象就会创建错误;
第二种模式与第三种模式相对来说,第三种不需要实例化工厂类,直接调用,所以建议使用第三种模式。