面向对象设计SOLID原则
开放封闭原则
一个软件实体(如:类、模块、函数)应该对扩展开放,对修改关闭。
里氏替换原则
所有引用父类的地方必须能透明地使用其子类的对象
依赖倒置原则
高层模块不应当依赖于低层模块,二者都应该依赖其抽象;抽象不应该以来细节,细节应该依赖抽象。
换言之,要针对接口编程,而不是针对实现编程。
接口隔离原则
使用多个专门的接口,而不使用单一的总接口,即客户端(调用底层模块的高层模块)不应该依赖那些它不需要的接口。
单一职责原则
不要存在多于一个导致类变更的原因(一个类只干一件事情)
通俗的说,即一个类只负责一个职责。
设计模式:为了隐藏底层逻辑,从而方便高层的调用
简单工厂模式
把写类的人和创建对象的人,当作是两个人
工厂类:生产对象的,例如:生产支付宝支付、微信支付
把信息隐藏
不直接向客户端暴露对象创建的实现细节,而是通过一个工厂类负责创建产品类的实例
- 角色
- 工厂角色(Creator)
- 抽象产品角色(Product)— 使得产品有同样的****对外表现
- 具体产品角色(Concrete Product)
- 优点
- 隐藏了对象创建的实现细节
- 客户端不需要修改代码
- 缺点
- 违反了单一职责原则,将创建逻辑集中到一个工厂类内
- 当添加新产品时,需要修改工厂类代码,违反了开闭原则
工厂方法模式
- 创建多个工厂
- 不会违反开闭原则
- 内容
- 创建一个用于创建对象的接口(工厂接口),让子类决定实例化哪一个产品类
- 角色
- 抽象工厂角色
- 具体工厂角色
- 抽象产品角色
- 具体产品角色
-
- 优点
- 每个具体产品都对应一个具体的工厂类,不需要修改工厂类
- 隐藏了对象创建的实现细节
- 缺点
- 每增加一个具体的产品类,就必须增加一个对应的具体工厂类(产生很多的工厂类)