设计模式
免费在线学习代码重构和设计模式 (refactoringguru.cn)
生成各个设计模式的空白文件可以执行此文件
设计模式可以分为
- 创建型模式(对已有的代码增加灵活性和复用性)
- 工厂方法(Factory Method)
- 抽象工厂(Abstract Factory)
- 生成器(Builder)
- 原型(Prototype)
- 单例(Singleton)
- 结构性模式 (这类模式介绍如何将对象和类组装成较大的结构, 并同时保持结构的灵活和高效。)
- 适配器(Adapter)
- 桥接(Bridge)
- 组合(Composite)
- 装饰(Decorator)
- 外观(Facade)
- 享元(Flyweight)
- 代理(Proxy)
- 行为型模式(这类模式负责对象间的高效沟通和职责委派。)
- 责任链(Chain of Responsibility)
- 命令(Command)
- 迭代器(Iterator)
- 中介者(Mediator)
- 备忘录(Memento)
- 观察者(Observer)
- 状态(State)
- 策略(Strategy)
- 模板方法(Tempate Method)
- 访问者(Visitor)
创建型模式
工厂方法(Factory Method)
工厂方法模式是一种创建型设计模式, 其在父类中提供一个创建对象的方法, 允许子类决定实例化对象的类型。
例子:
你有一家运输公司,早期只通过陆地运输,运送范围有限。
后来你想扩大公司业务,不但承接陆上运输,也承接海上运输。
那么是不是应该,路上运输使用汽车,海路运输使用轮船。
如果使用工厂方法,需要找到他们很强的共同属性,即运输功能。
那么工厂便可以通过不同的运输功能进行派出不同的运输工具。
代码
- 优点:
- 你可以避免创建者和具体产品之间的紧密耦合。
-
单一职责原则。 你可以将产品创建代码放在程序的单一位置, 从而使得代码更容易维护。
-
开闭原则。 无需更改现有客户端代码, 你就可以在程序中引入新的产品类型。
- 缺点:
- 应用工厂方法模式需要引入许多新的子类, 代码可能会因此变得更复杂。 最好的情况是将该模式引入创建者类的现有层次结构中。
- 与其他模式的关系
抽象工厂(Abstract Factory)
生成器(Builder)
原型(Prototype)
单例(Singleton)
结构型模式
行为模式
TODO