研磨设计模式之简单工厂模式-2
??????? 用来解决上述问题的一个合理的解决方案就是简单工厂,那么什么是简单工厂呢?
1:简单工厂定义
?
2:应用简单工厂来解决的思路
??????? 分析上面的问题,虽然不能让模块外部知道模块内的具体实现,但是模块内部是可以知道实现类的,而且创建接口是需要具体实现类的。
??????? 那么干脆在模块内部新建一个类,在这个类里面来创建接口,然后把创建好的接口返回给客户端,这样外部应用就只需要根据这个类来获取相应的接口对象,然后就可以操作接口定义的方法了。把这样的对象称为简单工厂,就叫Factory吧。
??????? 这样一来,客户端就可以通过这个Factory来获取需要的接口对象,然后调用接口的方法来实现需要的功能,而且客户端也不用再关心具体实现了。
??????? 简单工厂的结构如图5所示:
?
?Api:
??????? 定义客户所需要的功能接口
Impl:
?????? 具体实现Api的实现类,可能会有多个
Factory:
?????? 工厂,选择合适的实现类来创建Api接口对象
Client:
?????? 客户端,通过Factory去获取Api接口对象,然后面向Api接口编程
(1)先看看Api的定义,示例代码如下:
????????????????????? 图6? 使用简单工厂重写示例的结构示意图
?(1)接口Api和实现类Impl都和前面的示例一样,就不去赘述了。
(2)新创建一个简单工厂的对象,示例代码如下:
我很想要这书的
我很想要这书的
只要你觉得自己学到了东西,在贵都值!![]()
我很想要这书的
只要你觉得自己学到了东西,在贵都值!![]()
不是有折扣吗66 lz说800多要呢,值![]()
我很想要这书的
只要你觉得自己学到了东西,在贵都值!![]()
不是有折扣吗66 lz说800多页呢,值![]()
10 楼 mingyang2013 2010-11-20 初学设计模式,对楼主简单工厂定义理解:在客户代码中,使用简单工厂来创建一个接口的实例,也就是说,简单工厂提供了一个创建实例的功能,使得客户代码与具体的实例创建完全隔离(即“提供一个创建对象实例的功能”)。而工厂创建的具体是什么实例以及怎么创建的,由工厂决定,对客户代码来说都是透明的(即客户代码“无须关心其具体实现”)。这样,如果以后要改变接口的具体实现实例,最多在工厂内修改,返回不同实例,不会影响到客户代码(使用简单工厂的好处之一)。 11 楼 vieri122 2010-11-20 楼主你好,请问一下,你出的书和你blog上的文字有什么区别吗?如果没什么区别我就看blog算了 12 楼 chjavach 2010-11-21 vieri122 写道楼主你好,请问一下,你出的书和你blog上的文字有什么区别吗?如果没什么区别我就看blog算了
差别不是很大,当然看书还是blog,你自己选择,只有有收获就好。 13 楼 躁动的绵羊 2010-11-22 哥们 你抽象工厂模式还没说完,怎么就直接说简单工厂模式了? 14 楼 bjlf1105 2010-11-26 怎么更新有点慢啊?那书什么时候出售啊 15 楼 李学力 2010-11-27 问下你画UML图的工具是哪个? 16 楼 hankai_hk 2010-11-29 老大啊, 书都这么长时间了 这么还没有上市呢........郁闷 17 楼 pktangshao 2010-11-29 ctfzh 写道好像那个“抽象工厂模式”还没有写完
对的呀,那个没有写完.哥哥 18 楼 pktangshao 2010-11-29 说真的
我从来没有买过一本java方面的书.从来都是在网上看
但我这次真的觉得这本书很有价值..很值得研磨.研磨.
虽说价格方面有点贵了.但我觉得如果真正把书里的精领悟了还是非常值的.
ps:我买书很扣门的 19 楼 yangleilt 2010-12-01 书出来了没啊? 都多长时间了.什么时候能买到啊.麻烦楼主吧。地址说一下下 20 楼 chjavach 2010-12-06 yangleilt 写道书出来了没啊? 都多长时间了.什么时候能买到啊.麻烦楼主吧。地址说一下下
我也在无奈的等待中,目前得到的消息是在印刷厂了.
谢谢大家一直以来的鼎力支持,真诚致谢! 21 楼 褚晓娜(0511) 2010-12-15 很期待这本书。。。
似乎在哪看过介绍,很不错