[设计模式]工厂模式
[设计模式]工厂模式
1. “对象创建”模式
通过“对象创建”模式绕开new,来避免对象创建(new)过程中所导致的紧耦合(依赖具体类),从而支持对象创建的稳定。他是接口抽象之后的第一步工作。
面向接口编程告诉我们,一个接口的类往往应该设计成为抽象类,而不应该声明成具体的类,如果声明具体的类则无法支持具体的变化。
解决这个最先想到的就是使用“抽象基类成员+构造函数”的组合,的确,这确实能组合成功。但是另一方面这又意味着你必须每次创建一个类时必须传递一个对象,有时这大大增加了繁琐性,有时你可能不需要这个类,又增加工作负担。
2. 工厂模式
工厂模式提出了一个解决方案,通过一个工厂抽象类来调用其方法产生一个具体的成员函数。
比如工厂类派生出一个工厂类A,其会调用工厂方法产生出一个A对象。你如果想使用则随时调用一个函数,其传入一个工厂类,在函数内部实现对类成员的赋值。
下面的代码再“策略模式”中出现过,从中可以看到工厂模式的好处,其将一个全局变量的量放到一个局部变化量(具体工厂)等,这样就很好理解。
SalesOrder(StrategyFactory* strategyFactory) { this->strategy = strategyFactory->CreateStrategy(); }