一 : 策略模式
(1)定义: 将程序中经常改变的行为(方法),独立封装起来形成一系列算法族,让这些算法族可以互相替换,并且与使用的客户(类)相互独立,不存在继承,实现等关系.
(2)使用场景:当程序模块中的多个类要使用的方法经常改变,可以将这些经常改变的方法分类成一个个算法组,相互替换.
(3)设计原则
3.1 多用组合,少用继承. 我们应该在扩展性和维护性之上提高复用性,而继承虽然提升了复用性,但是却破坏了维护性和扩展性.
3.2 针对接口(超类)编程.我们应该在代码中经常使用超类来进行编程,因为这样可以更好的使用多态, 来写出复用和通用的代码. 避免采用实现类这种硬编码.
3.3 将程序中经常改变的模块,代码,独立封装起来.与那些不经常改变的模块,代码分离.
二: 工厂模式
(1)定义:工厂模式是设计模式中常用的一种模式,工厂模式就是将创建对象的过程进行封装的一种模式,从而达到高内聚,低耦合的设计.工厂模式分为3种
(1.1)简单工厂模式:更像是一种好的编程习惯,将创建对象的代码封装到一个工厂类中,来创建对象..
(1.2)工厂方法模式:定义一个创建对象的接口(超类),但由具体的工厂实现类(子类)来决定实例化哪一个类.
(1.3)抽象工厂模式:提供一个接口(超类),用于创建相关或依赖对象的家族,而不需要明确指定具体类.
(2)使用场景:当程序中需要用到多个属于一种类型的对象时,并且创建这种对象有很大的扩展性,需要用到工厂模式.
(3)设计原则
3.1 将交互的对象设计为低耦合.
3.2 组件之间应该依赖抽象,不依赖具体.
3.3 开闭原则,对扩展开放,对修改关闭.