再看设计模式——工厂方法与抽象工厂模式

传统GOF的24种设计模式中有两个工厂模式:工厂方法(factory method) vs 抽象工厂(absctract factory),而通常又能听到所谓的简单工厂模式(simple factory)。实际上简单工厂的实现就是一个static的工厂创建方法,也就是工厂方法,两个是同一个东西。

工厂方法模式在工程实现上可以使用map替代switch case,用来关联产品标识符和具体产品类型(这个技巧C++实践比Java多),工厂方法模式适合与单例模式配合使用。

C++实现还可以使用泛型,关联具体产品、产品标识符和产品创建方法,还可以用泛型将错误处理暴露出去。

抽象工厂模式用于将一组相关的工厂方法进行管理,类似创建工厂的工厂,比如创建一个关卡中的各种怪兽。

C++实现中可以将产品族TList、要创建的产品用泛型来暴露,并使用Type2Type技巧消除歧义。

打赏作者
提交看法

抢沙发

还没有评论,你可以来抢沙发