设计模式笔记:工厂模式

Posted Monkey_Dog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式笔记:工厂模式相关的知识,希望对你有一定的参考价值。

这篇文章总结的主要是工厂方法和抽象工厂,顺带简单工厂这种编程习惯

一、简单工厂

简单工厂并不算是一种设计模式,他更像一种编程习惯,并没有严格的遵守开放关闭原则,而且他仅仅只是把要改变的部分跟不变的部分分离开,但是把具体产品的创造过程封装起来,客户端程序猿就不需要直接操作一堆具体子类,在知道最少的情况下达到目标,不必考虑这个类是怎么被创建出来的,降低了程序的耦合。

我们看看wiki百科的一段话:普通的工厂方法模式通常伴随着对象的具体类型与工厂具体类型的一一对应,客户端代码根据需要选择合适的具体类型工厂使用。然而,这种选择可能包含复杂的逻辑。这时,可以创建一个单一的工厂类,用以包含这种选择逻辑,根据参数的不同选择实现不同的具体对象。这个工厂类不需要由每个具体产品实现一个自己的具体的工厂类,所以可以将工厂方法设置为静态方法。 而且,工厂方法封装了对象的创建过程。如果创建过程非常复杂(比如依赖于配置文件或用户输入),工厂方法就非常有用了。

假设Pizza为产品抽象,它下层有各种具体子类Pizza,当客人预定Pizza的时候,提供一个类图: