**模式**:避免重复问题,而提出来的解决方案
模式又可以分为:架构模式、设计模式
**架构模式**:软件架构商的整体考虑而提出来的一些解决方案,
比如:三层架构--- B/S,C/S,MVC,ORM事物脚本、领域模型...从宏观的角度上来说.
设计模式:是从微观的角度上来看待软件开发过程中,碰到的一些重复业务场景,并提出的解决方案.
设计模式:创建性设计模式,结构性设计模式,行为性设计模式.
**创建性设计模式**:更多的关注对象如何创建,而提出来的各种创建方案.
**结构性设计模式**:更多的关注于类和类,对象和对象的整体结构,而提出来的各种解决方案.
**行为性设计模式**:更多的关注于实例之间的行为互调,以及职责分配的问题.
| 创建型 | 结构型 | 行为型 |
类 模式 | 工厂方法(Factory Method) | 适配器模式(Adapter) | 解释器模式(Interpreter) |
|
| 模板方法模式(Template Method) | |
对象 模式 | 抽象工厂(Abstract Factory) | 适配器模式(Adapter) | 职责链模式(Chain of Responsibility) |
单例模式(Singleton) | 桥接模式(Bridge) | 命令模式(Command) | |
原型模式(Prototype) | 复合模式(Composite) | 迭代器模式(Iterator) | |
建造模式(Builder) | 装饰器模式(Decorator) | 中介者模式(Mediator) | |
| 外观模式(Façade) | 备忘录模式(Memento) | |
| 享元模式(FlyWeight) | 观察者模式(Observer) | |
| 代理模式(Proxy) | 策略模式(Strategy) | |
|
| 状态模式(State) | |
|
| 访问者模式(Visitor) |
1、**简单工厂模式**
简单工厂模式又被称为“静态工厂方法,该模式会专门定义一个工厂类”然后在给工厂提供一个静态方法,有该静态方法根据用户的输入.
动态决定创建什么类型的对象.通常来说:工厂类的产生的对象,都是有一个特点,具备相同的父类,或者具备相同的接口.
简单工厂的3中角色:工厂类,产品的抽象类(接口)具体的产品.
1、工厂类:主要负责根据用户的输入,动态的产生具体的产品.
2、产品抽象类(接口):对具体产品进行类的抽象或者行为的抽象.
3、具体产品:工厂类产生的具体实例.
简单工厂模式的作用:将客户调用类商的2个职责(创建对象的职责,调用对象的行为的职责)进行职责分离,让调用类最终只存在1个职责(调用对象的行为的职责)而将创建对象的职责,委托给工厂类.
**简单工厂模式的缺点**
简单工厂,实际上将对象的产生,由之前的客户调用类身上强制性的定义在工厂类身上,工厂类此时具备一定的创建对象的业务逻辑,以及一些判断逻辑.那么如果具体的产品,需要发生变
化,或者有新的产品需要扩展,那么毫无疑问,此时就要需要去针对工厂类做工厂类做相应的变化,那么无形当中就违背类“开闭原则”,“单一原则”、“依赖倒转原则”
注意:简单工厂模式,只能产生同一家族(继承相同类,实现相同接口)的产品,非同一家族的产品,简单工厂是无法使用的.