以文本方式查看主题 - 计算机科学论坛 (http://bbs.xml.org.cn/index.asp) -- 『 软件工程论坛 』 (http://bbs.xml.org.cn/list.asp?boardid=48) ---- [原创]理解设计模式(一)工厂模式 (http://bbs.xml.org.cn/dispbbs.asp?boardid=48&rootid=&id=39097) |
-- 作者:wcdxyl -- 发布时间:10/19/2006 4:32:00 PM -- [原创]理解设计模式(一)工厂模式 软件开发过程中需求变更是家常便饭,调研不充分,特殊情况,设计失误都会打乱原来的计划,实际表明瀑布开发实在是一种太理想的状态。除了采用迭代开发模式以外,开发方法也必须讲究,这样才能适应以后的需求变化,不会前功尽弃。办法只有一个,利用设计模式,避免使用硬编码。我最近看了一些设计模式把自己的理解共享给大家。 工厂模式 就是通过一个工厂类创建所有类,好处是隐藏了具体类的实现细节,可以根据参数决定生成哪些具体类的实例。并且可以推迟到运行的时候才决定要创建哪个类的实例,而不是在编译时就必须知道要实例化哪个类,可见避免了硬编码。也就是说一旦要创建实例只需要通过工厂类创建就可以了,降低了耦合度。 |
-- 作者:pennyliang -- 发布时间:12/21/2006 11:08:00 AM -- 工厂模式首要条件是面向接口编程,设计模式,从每个模式命名可以知道,是面向应用的,换句话说不是本质,而是现象。 对一个对象的请求,之前,应用已经获得了该对象接口的全部,只是不知道具体的对象,用工厂模式最为恰当,为了更好的说明问题,举个例子。 以下是伪码。 interface user int get_id(); bool is_boy(); bool is_girl(); void dispose(); ...... -----------------------------应用一端-------------------------- user* my_user = Factory.Create(SYSTEM_USER); //这里应用必须知道Factory的实例,所以的应用和Factory耦合。但是Factor.Create,如何实例化一个对象并不需要应用一端关心。 。。。。 my_user->dispose(); //注意应用一端只知道接口,不知道具体类型,所以不能delete my_user. ------------------------------工厂一端-------------------------- 面向对象是理论化很强的学科,设计模式只是面向应用的一个方面,希望大家从面向对象本质去了解问题。设计模式好比招式,而且招式也远不是设计模式所能概括的,对设计模式的评价不能展开了,希望这个例子大家能够理解,面向接口编程而不是面向实现编程才是工厂模式的真谛。依赖倒置原理(DIP),也是工厂方式的内在涵义。 } |
-- 作者:pennyliang -- 发布时间:12/21/2006 11:14:00 AM -- 工厂模式首要条件是面向接口编程,设计模式,从每个模式命名可以知道,是面向应用的,换句话说不是本质,而是现象。 对一个对象的请求,之前,应用已经获得了该对象接口的全部,只是不知道具体的对象,用工厂模式最为恰当,为了更好的说明问题,举个例子。 以下是伪码。 interface user int get_id(); bool is_boy(); bool is_girl(); void dispose(); ...... -----------------------------应用一端-------------------------- user* my_user = Factory.Create(SYSTEM_USER); //这里应用必须知道Factory的实例,所以的应用和Factory耦合。但是Factor.Create,如何实例化一个对象并不需要应用一端关心。 。。。。 my_user->dispose(); //注意应用一端只知道接口,不知道具体类型,所以不能delete my_user. ------------------------------工厂一端-------------------------- 面向对象是理论化很强的学科,设计模式只是面向应用的一个方面,希望大家从面向对象本质去了解问题。设计模式好比招式,而且招式也远不是设计模式所能概括的,对设计模式的评价不能展开了,希望这个例子大家能够理解,面向接口编程而不是面向实现编程才是工厂模式的真谛。依赖倒置原理(DIP),也是工厂方式的内在涵义。 } |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
54.688ms |