创建者模式概述

(转)创建者模式作用可以概括为如下两点:
1.封装创建逻辑,绝不仅仅是new一个对象那么简单。
2.封装创建逻辑变化,客户代码尽量不修改,或尽量少修改。
使用创建者模式是为了提高系统的可维护性和可扩展性,提高应对需求变化的能力!
--

这两端和我的文章几乎一字不差,我没看过那个webcast,也实在是太巧了.
我google了一下“创建者模式”原来我这篇文章排在第一 ;p
以下是我对为什么需要创建者模式的解释

---
Why do we need Creator pattern?
相信很多初学者会有这么一个问题, 为什么我们需要创建者模式?
然而很多人在向别人介绍创建者模式的时候, 常常对于这个问题一带而过.(比如我的老师).
回答: 创建者模式是用来创建对象的模式. 而模式是前人经验的总结,所以创建者模式是一个好东西.

Do you need answer like this? What can we learn about Creator Pattern From this ?
首先对我来说这不是我需要的答案, 并且从中我也仅仅知道了创建者模式是用来创建对象的模式. (晕, 你读读这句话不是废话嘛)
那么我的答案是什么?

用代码说明问题. (源代码有时胜过千言万语)
首先创建了一辆奔驰.
Car car=new Benze();
突然我们的车变了, 变成宝马了. Ok 我修改一下.
Car car=new BMW();

设想一下在我们的代码中散布了无数这样的代码.不止一处(这点很重要)
那么当你以后需要换车的时候, 是不是需要一一修改我们的创建代码把Benze改成BMW.
然后我们再用工厂来实现一下:
Car car=benzeFactory().Factory();
呵呵 这算什么? 没事找事做. 如果要换车,你不是还要修改原来的代码改成下面这样.
Car car=bmwFactory().Factory();

是吗?
如果创建代码只有这里一处可能是这样, 但是如果很多地方都要创建的话就不是了.
CarFactory carFac=new BenzeFactory();
Car car=carFac.Factory();
当你需要换Car的时候你只需修改一处代码就是CarFactory carFac=new XXXFactory();
其他创建车的地方,永远不变,还是Car car=carFac.Factory();
Ok? 你明白了吗?

我们很难避免修改, 但是我们要尽量做到只修改一处.
不知道 这样的解释你是否满意.

使用创建者模式是为了提高代码的可维护性(即应对未来修改的能力).

posted @ 2009-11-21 10:31  Silver.Lee  阅读(343)  评论(0编辑  收藏  举报