离弦之Ray

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  55 Posts :: 0 Stories :: 33 Comments :: 0 Trackbacks
 

Decorator Pattern其实早就接触过了,从java的输入语句中可见一斑InputStream in = new BufferedInputStream(new FileInputStream(“test.txt”)); 其中BufferedInputStream FileInputStream 都是InputStream的子类,通过包含关系,让外围的类包含内部那个类的功能及数据,说的形象一点,就是在内部那个类外面加了一层装饰。这也是装饰模型最核心的概念。

Factory Pattern

书中举了匹萨店的例子,一开始的类,将制作不同类型匹萨的方法都包含在里面,整个类显得很冗余。顺着正常的思路,将制作匹萨的方法从这个类里面剥离出去单独形成一个类,这个类就像生产对象的工厂,只要你告诉它该生产的产品的型号,它就生产对应的对象再发送给客户。

按照书中的例子,如果匹萨店开在同一个城市以内,匹萨的风味多样,那么上述的模式很好地实现了上面的功能。但如果是连锁店,每个地方的风味不同呢?……

是的,每个地方的风味不同,但同一个地方不同匹萨的种类却相当有限。也就是说可以有一个匹萨店父类,然后各地的分店是这个父类的子类。而其中最重要的制作匹萨的方法在父类中被声明为虚函数,由各个具体的子类来实现。这样“工厂”又被搬回具体的类中间。

具体如何使用,我个人觉得是要看情况的。上面两个是工厂模式的两种表现形式。

    对于后一种模式,里面用到的对象,比如例子中匹萨的原材料,同样可以用工厂模式来实现,这样程序的结构就相当灵活了。

posted on 2007-09-10 23:21 离弦之ray的技术天空 阅读(215) 评论(0)  编辑  收藏 所属分类: Design Pattern

只有注册用户登录后才能发表评论。


网站导航: