设计模式
概念
设计模式
是为解决特定场景下的问题而定制的解决方案
总之就是为解决一类面向对象的问题而总结的方案
面向对象的六大基本原则
单一职责原则
(SRP,Single Responsibility Principle)
对于一个类,应该有且仅有一个引起它变化的原因
开闭原则
(OCP, Open Close Principle)
软件系统中的各种组件,如模块、类。方法等,应该在不修改现有代码的基础上引入新功能。即对修改封闭,而对扩展开放。
里式替换原则
(LSP,Liskpv Substitution Principle)
把父类替换为它的子类,程序的行为没有变化
接口隔离原则
(ISP, Interface Segregation Principle)
客服端不应该依赖它不需要的接口,一个类对另一个类的依赖应该建立在最小的接口上。也就是说接口中的方法应该尽量的少。
例如 UITableView中的dataSource和delegate。
依赖倒置原则
(DIP,Dependence Inversion Principle)
上层模块不应该依赖于下层模块,两者都应该依赖于抽象。抽象不应该依赖于细节,细节应该依赖于抽象。
面向接口编程。
迪米特法则
(LoF, Low of Demeter)
如果两个类不必彼此直接通信,他们就不应当发生直接的相互作用。如果其中一个类需要调用另外一个类的方法,可以通过第三者转发该调用。
在类的节后设计上,每个类都应当尽量降低成员的访问权限。
也叫最少知识原则(LKP,Least Knowledge Princople)或者只和直接朋友交流。
设计模式之工厂模式
单工厂模式
(Simple Factory Pattern)
- 适用场景:
- 产品种类少
- 用户不关注产品创建细节
优点:
工厂类包含必要的判断逻辑,用户无需了解对象创建的具体细节,有利于优化软件结构。
缺点:
1.工厂类不但要处理对象创建的细节,而且要判断创建何种对象,违背了“单一职责原则”,导致系统丧失灵活性和可维护性
2.在添加产品类型后,需要同时修改工厂类,违背了“开闭性原则”,每次都需要重新编译工厂类。
工厂方法模式
(Factory method Pattern)
适用场景:
- 当一个类不知道它所需要创建的对象的类时。
- 需要将一个对象的创建延时子类中实现时。
优点:
1遵守了依赖倒置原则
2.良好的封装性,调用者只需要知道具体的产品类,而不需要知道如何创建它
3.良好的扩展性,增加产品的时候,基本不需要修改工厂类
缺点:
增加产品类的实现,客户就增加一个特定的工厂子类。
抽象工厂模式(Abstract Factory Pattern):待续