中易网

java策略模式和工厂模式的区别

答案:1  悬赏:0  
解决时间 2021-02-28 11:42
java策略模式和工厂模式的区别
最佳答案
工厂模式是创建型模式
策略模式是行为性模式
一个关注对象创建
一个关注行为的封装
策略模式就是定义一系列的算法,这些算法可以在需要的时候替换和扩展.工厂模式是生成型的模式,在你需要的时候构建具体的实例.

在下面的情况下应当考虑使用策略模式:
1. 如果在一个系统里面有许多类,它们之间的区别仅在于它们的行为,那么使用策略模式可以动态地让一个对象在许多行为中选择一种行为。
2.
一个系统需要动态地在几种算法中选择一种。那么这些算法可以包装到一个个的具体算法类里面,而这些具体算法类都是一个抽象算法类的子类。换言之,这些具体
算法类均有统一的接口,由于多态性原则,客户端可以选择使用任何一个具体算法类,并只持有一个数据类型是抽象算法类的对象。
3. 一个系统的算法使用的数据不可以让客户端知道。策略模式可以避免让客户端涉及到不必要接触到的复杂的和只与算法有关的数据。
4. 如果一个对象有很多的行为,如果不用恰当的模式,这些行为就只好使用多重的条件选择语句来实现。此时,使用策略模式,把这些行为转移到相应的具体策略类里面,就可以避免使用难以维护的多重条件选择语句,并体现面向对象设计的概念。

策略模式的优点和缺点
策略模式有很多优点和缺点。它的优点有:
1. 策略模式提供了管理相关的算法族的办法。策略类的等级结构定义了一个算法或行为族。恰当使用继承可以把公共的代码移到父类里面,从而避免重复的代码。
2.
策略模式提供了可以替换继承关系的办法。继承可以处理多种算法或行为。如果不是用策略模式,那么使用算法或行为的环境类就可能会有一些子类,每一个子类提
供一个不同的算法或行为。但是,这样一来算法或行为的使用者就和算法或行为本身混在一起。决定使用哪一种算法或采取哪一种行为的逻辑就和算法或行为的逻辑
混合在一起,从而不可能再独立演化。继承使得动态改变算法或行为变得不可能。
3. 使用策略模式可以避免使用多重条件转移语句。多重转移语句不易维护,它把采取哪一种算法或采取哪一种行为的逻辑与算法或行为的逻辑混合在一起,统统列在一个多重转移语句里面,比使用继承的办法还要原始和落后。
策略模式的缺点有:
1. 客户端必须知道所有的策略类,并自行决定使用哪一个策略类。这就意味着客户端必须理解这些算法的区别,以便适时选择恰当的算法类。换言之,策略模式只适用于客户端知道所有的算法或行为的情况。
2. 策略模式造成很多的策略类。有时候可以通过把依赖于环境的状态保存到客户端里面,而将策略类设计成可共享的,这样策略类实例可以被不同客户端使用。换言之,可以使用享元模式来减少对象的数量。

策略模式与很多其它的模式都有着广泛的联系。Strategy很容易和Bridge模式相混淆。虽然它们结构很相似,但它们却是为解决不同的问题
而设计的。Strategy模式注重于算法的封装,而Bridge模式注重于分离抽象和实现,为一个抽象体系提供不同的实现。Bridge模式与
Strategy模式都很好的体现了"Favor composite over inheritance"的观点。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
益丰农资地址有知道的么?有点事想过去
福建泉州到广东珠海要多少钱的车费
比如夫妻二人房子面积300平米房产税该多少
急求!这个版本的电脑怎么下载PPTV?为什么下
罗福沟村这个地址在什么地方,我要处理点事
正宗兰州马家牛肉拉面地址在什么地方,想过去
请问大家都怎样用土沤肥的 我这样对不
哪本计量经济学的书适合做本科教材,简单的就
kik friends怎样才能聊天
Mr Li is 50同义句
女友为何突然主动来我宿舍?
如果女孩子知道你喜欢她(没有表白),但是她
索奇消毒柜怎么样
幸福减肥教到底是不是骗子
小米4和华为P8青春版那个手机更好。
推荐资讯
长沙市在什么地方啊,我要过去处理事情
威尼斯宴会厅在什么地方啊,我要过去处理事情
赞美母亲的短文
福建三明泰宁哪有蜈蚣养殖
中药制药属于什么专业
行政机关的事业编人员可以执法吗?
黑龙江省丰吉种业有限责任公司在什么地方啊,
mdr-z1000/q和1a哪个好
wow的截图找不见了,怎么回事嘞
最新的遨游云浏览器是不是只有一种主题,怎么
郑州的廉租房怎样申请
东征西讨的征和讨是什么意思
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?