A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 袁世宇 黑马帝   /  2011-11-23 14:26  /  1846 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

最近一直在纠结于工厂模式,和代理模式,希望各位大大有空了帮我解答下,查找过一些资料,可是还是稍微有点小不明白

4 个回复

正序浏览
本帖最后由 梦女孩 于 2011-11-24 12:07 编辑

工厂,顾名思义是加工和生产的地方。JAVA的工厂方法加工出来的则是对象。加工必须要有原料 如就是方法的参数。那么产品呢,必须根据原料的种类来定。不能说用一袋子糖能做出一件衣服,那不靠谱。所以,参数传递过去的类名,就是返回实例对象的规范。

代理的作用就是我想要用一个类,而且我想给这个类下的所有方法都加一段代码,这总不能去创建一个子类挨个方法继承吧,太麻烦了,那就直接用代理吧,从另一个入口去调用 返回的时候自然就加上了那段代码。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
工厂模式就是就是创建对象的接口,当我们需要创建多个对象的时候,如果一个一个的创建,代码会很多,如果也写入构造函数中,代码就会很多很难看,工厂模式就是将这些对象封装到工厂里,有工厂一个一个生产,可以提高系统的可扩展性。
代理模式老师讲了很多,可以再多看一下视频。时间久了,就会比较透彻的理解了

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
崔浩 黑马帝 2011-11-23 17:42:58
藤椅
我是这样理解的:
当一个类中的方法需要传递另一个类作为参数(一般定义成接口,实际传需要的实现类),然后创建一个类(工厂类,需要创建两个对象)管理这个对象并传递对象参数
工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。
考虑使用工厂方法模式:
当客户程序不需要知道要使用对象的创建过程。
客户程序使用的对象存在变动的可能,或者根本就不知道使用哪一个具体的对象。
动态代理先从代码看起来,然后再去理解,相信你会很快理解的

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1

查看全部评分

回复 使用道具 举报
工厂模式定义:提供创建对象的接口.

工厂模式就相当于创建实例对象的new,
我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用来创建实例对象的,
所以以后new时就要多个心眼,是否可以考虑使用工厂模式,虽然这样做,可能多做一些工作,但会给你系统带来更大的可扩展性和尽量少的修改量。
以类Sample为例, 如果我们要创建Sample的实例对象:
Sample sample=new Sample();   
可是,实际情况是,通常我们都要在创建sample实例时做点初始化的工作,比如赋值 查询数据库等。   
首先,我们想到的是,可以使用Sample的构造函数,这样生成实例就写成:   
Sample sample=new Sample(参数);   
但是,如果创建sample实例时所做的初始化工作不是象赋值这样简单的事,可能是很长一段代码,如果也写入构造函数中,那你的代码很难看了(就需要Refactor重整)。

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马