大纲
- 创建型模式
- 简单工厂模式
- 工厂方法模式
- 抽象工厂模式
- 建造者模式
- 单例模式
- 原型模式
- 结构型模式
- 适配器模式
- 桥接模式
- 装饰模式
- 外观模式
- 享元模式
- 代理模式
- 组合模式
- 行为型模式
- 命令模式
- 中介者模式
- 观察者模式
- 状态模式
- 策略模式
- 职责链模式
- 迭代器模式
- 访问者模式
- 解释器模式
- 模板方法模式
- 6大法则
- 单一职责原则
- 开闭原则
- 依赖倒转原则
- 迪米特法则
- 里式替换法则
- 接口隔离法则
内容有点小长!可以跳着看哈!
简单工厂模式
在简单工厂模式
中,可以根据参数的不同返回不同类的实例。简单工厂模式
专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类
。
例子:麦当劳、肯德基和汉堡王都有汉堡包,尽管有不同的样式、口味,但是需要购买的时候,只管向服务员说 来份汉堡 就可以了(只能是默认的汉堡,不能不同口味)!
麦当劳、肯德基和汉堡王都是生产汉堡包的Factory
工厂。
- 优点
客户端可以免除直接创建产品对象的责任,而仅仅消费
产品;客户端无须知道所创建的具体产品类的类名,只需要知道具体产品类所对应的参数即可,对于一些复杂的类名,通过简单工厂模式可以减少使用者的记忆量。
- 缺点
- 由于工厂类集中了所有产品创建逻辑,一旦不能正常工作,整个系统都要受到影响。
- 使用简单工厂模式将会增加系统中类的个数,在一定程序上增加了系统的复杂度和理解难度。
- 系统扩展困难,一旦添加新产品就不得不修改工厂逻辑,在产品类型较多时,有可能造成工厂逻辑过于复杂,不利于系统的扩展和维护。
- 简单工厂模式由于使用了静态工厂方法,造成工厂角色无法形成基于继承的等级结构。
工厂方法模式
在工厂方法模式
(也叫虚构工厂
)中,工厂父类负责 定义创建产品对象的公共接口 ,而工厂子类则负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例化哪一个具体产品类。
例子:同样是汉堡包,有不同的样式、口味,需要购买的时候,不同需求的人只管向服务员直接说就可以了,每个人都可以提自己的口味!
- 优点
- 用户只需要关心所需产品对应的工厂,无须关心创建细节,甚至无须知道具体产品类的类名。
- 入新产品时,无须修改抽象工厂和抽象产品提供的接口,无须修改客户端,也无须修改其他的具体工厂和具体产品,而只要添加一个
具体工厂
和具体产品
就可以了。
- 缺点
- 在添加新产品时,需要编写新的具体产品类,而且还要提供与之对应的
具体工厂类
。 - 增加了系统的抽象性和理解难度。
PREVIOUSvscode使用cl编译c++
NEXT调试