浅谈设计模式之一----------工厂模式

  设计模式,我们不得不面对,但开始的时候又有些晕.所以,难免有些不妥的地方,希望大家能够指出来,相互交流.

  "对扩展开放,对修改封闭".

  "找出会变化的方面,把它们从不变的地方分离出来".

 

Code

当有一群相关的具体类时,就会写出如下代码:

 

Code

 

究竟要实例那个类,要在运行时才能决定.一旦有变化和扩展,就得重新打开这些代码进行检查和修改.违背了"对扩展开放,对修改封闭".

下面正式进入主题:

我们以一个比莎店为例子.

作为一个比莎店的主人:有如下代码:

 

Code

 

当需要更多的Pizza时:

Code

 

此时,如果我要别的味道的Pizza时,会有:

 

Code

此时,我们要该知道这样一个事实了,那些会变化,那些不变化, "找出会变化的方面,把它们从不变的地方分离出来".

重要:封装创建对象代码,因为它是变的.

我们可以将创建对象移到orderPizza()之外.找一个类,专门创造Pizza.暂时我们把这个类叫为SimplePizzaFactory.

我们称这个对象为"工厂";

 

 

Code

这个时候,我们就要重新改写PizzaStore类了,因为它移出了一部分代码.

 

Code

下面给大家个关系图看看,是自己P的,因为一些画图工具没下.所以不怎么好,请大家谅解. https://files.cnblogs.com/dreamersjun/11.gif

另外,全部的代码在这.

 

Code
Code
Code
Code
Code
Code
Code

OK,希望大家多指教,会用一个礼拜的时间来持续学习工厂模式.

posted @ 2008-09-15 19:43  打瞌睡的耶稣  阅读(345)  评论(0)    收藏  举报