传统GOF的24种设计模式中有两个工厂模式:工厂方法(factory method) vs 抽象工厂(absctract factory),而通常又能听到所谓的简单工厂模式(simple factory)。实际上简单工厂的实现就是一个static的工厂创建方法,也就是工厂方法,两个是同一个东西。
工厂方法模式在工程实现上可以使用map替代switch case,用来关联产品标识符和具体产品类型(这个技巧C++实践比Java多),工厂方法模式适合与单例模式配合使用。
C++实现还可以使用泛型,关联具体产品、产品标识符和产品创建方法,还可以用泛型将错误处理暴露出去。
抽象工厂模式用于将一组相关的工厂方法进行管理,类似创建工厂的工厂,比如创建一个关卡中的各种怪兽。
C++实现中可以将产品族TList、要创建的产品用泛型来暴露,并使用Type2Type技巧消除歧义。
本文是全系列中第3 / 7篇:再看设计模式
- 再看设计模式——命令模式
- 再看设计模式——单例模式
- 再看设计模式——工厂方法与抽象工厂模式
- 再看设计模式——状态模式与策略模式
- 看设计模式——模板方法与策略模式
- 再看设计模式——中介者模式与观察者模式
- 再看设计模式——访问者模式
抢沙发
还没有评论,你可以来抢沙发