在线71人
首页
主题总表
培训咨询
精华
查搜
注册
登陆
用户
自动登陆
密码
新用户注册
忘记密码?
首页
»
论坛
»
设计模式、框架和架构
上一主题
我现在的工作是web开发,看了几本有关模型设计书后,感觉有的设计很麻烦,不明白设计者的用意。 下面是我总结的一份设计,大家看看哪个环节有问题,希望能给点宝贵建议,我会时时关心该帖_wrriten b..
返回本主题
返回主题列表
下一主题
看了很多文章,想请教您一个关于订单系统的设计: 1、订单系统需要适用各种业态模式; 2、订单的呈现需要按某种具体业态模式的分类来呈现; 3、订单数据与外部系统进行导入导出; 4、订单可以支持强..
Go
总共有
5
回复 /
1
页
前往下页:
thinkjava
悄悄话
发表文章: 110
注册时间: 2007年11月03日 19:22
banq 你好,请教模式
2006年10月25日 11:18
标签列表
mediator模式
(2)
设计模式
(142)
你好,banq,我的理解对吗?谢谢回答指正
Mediator(中介者):多个对象之间发生互相的交互行为,对象既会影响别的对象,又会被别的对象所影响,这些同事对象通过彼此的相互作用形成系统的行为,呈现一种网状结构,通过引入中介者对象(Mediator)系统则会变为以中介者为中心的一种星型结构,在这种结构中同事对象不再通过直接的联系与另一对象发生相互作用,而是通过中介者对象与另一对象发生相互作用,这样整个系统就不会因为新的对象引入或删除造成大量的修改工作,仅仅是中介对象发生改动,这样系统提高了可扩展性和可修改性
Strategy(策略):其实就是把一个算法或其它逻辑封装成一个单独的类,比如A类,通过另一个类B注入这个类A,然后在这个类B中通过A类的对象调用A类中定义的算法,这样可以在运行期间自由地选择不同的算法,提高系统的灵活性
banq
悄悄话
发表文章: 9290
注册时间: 2002年08月03日 17:08
Re: banq 你好,请教模式
2006年10月25日 14:53
>Mediator(中介者):
你的描述有道理,但是我好像看到象是Facade模式的描述,你能否再比较一下Mediator和Facade模式呢?
thinkjava
悄悄话
发表文章: 110
注册时间: 2007年11月03日 19:22
Re: banq 你好,请教模式
2006年10月26日 10:54
呵呵:
Facade:是封装,把一些反复书写的或一些模板式的代码封装起来,供程序中多次调用,比如JDBC操作中,可以封装一些模板式的代码,以使程序更加简明,此模式只是强调封装,目的是少写一些代码
Mediator:是分离,把多个互相会受影响的对象分开,这些对象不再直接交互,而是通过Mediator对象间接交互,这样,这些同事对象之间不再直接偶合,一个对象的改变,不会引起别外一个对象的变化,此模式强调分离,目的是提高程序的可修改性
banq
悄悄话
发表文章: 9290
注册时间: 2002年08月03日 17:08
Re: banq 你好,请教模式
2006年10月26日 13:59
这两者更重要区别是:结构型模式和行为模式区别。
Facade模式注重结构;Mediator模式是行为,也就是运行时的行为,Mediator封装的是通讯行为。
Observer模式则是分离通讯行为。
拜托你以后标题写明是什么模式,如果一律是“banq你好 请教模式”,是不是太单调?
thinkjava
悄悄话
发表文章: 110
注册时间: 2007年11月03日 19:22
Re: banq 你好,请教模式
2006年10月26日 15:07
对,Facade是属于结构模式,适合当对象未来行为复杂变化时,如果进行结构搭建,才能适应这个行为的变化。
而Mediator则是对通讯行为的封装,把A和B之间通讯的行为进行了封装改变(由直接交互改变为间接交互)
Observer则把这种通讯行为交由Observer来处理,相当于是分离
banq
悄悄话
发表文章: 9290
注册时间: 2002年08月03日 17:08
Re: banq 你好,请教模式
2006年10月27日 12:39
结构型模式和行为模式主要区别在于:一个是代码级别;而后者是在代码阶段决定运行事情,后者更复杂一些,举个例子,后者类似航天器的设计,在航天器设计时,我们是设计其运行时的各种功能。而结构型模式则只是为了代码的容易理解和松耦合而用,与运行无关。
从这点看:Facade模式和Mediator有本质的区别,当然你可以说:Mediator是基于Facade模式基础的,它至少也是一个Facade,但它的重点不是这里,而是协调前后通讯、前后台流向。
MVC模式中Controller实际就是一个Mediator,所以,既然Controller/Struts Action已经承担Mediator功能,我们遵循
OO
的封装分派原则,实现功能分离,因此,不能再在Controller/Action中加入业务功能,业务逻辑应该在Model/Service中实现。
这也是我批判Ruby on rails为了简化而在Action中写入业务逻辑的原因。
简化不能以丧失
OO
设计为代价,否则我们回到Foxpro!
这个主题有
5
回复 /
1
页
Go
上一主题
返回本主题
返回主题列表
返回页首
下一主题
热点TAG:
AOP
cache
缓存
DDD
EJB
集群
设计模式
Hibernate
IOC
JiveJdon
OO
RBAC
Seam
Spring
Struts
查询本论坛内
近一天
近三天
近一周
近一月
近三月
近半年
近一年
所有
回复超过
的热门帖子
标题
内容
解惑之道在
J道
,打造中国最具影响力的的企业软件社区
OpenSource
JIVEJDON
v3.0
Powered by
JdonFramework
Code © 2002-08
jdon.com
anti spam