请说上 strategy和bridge模式的区别
请说下 strategy和bridge模式的区别桥和策略模式个人认为非常相似,都是强调将实现与抽象分离,是否可以认为
请说下 strategy和bridge模式的区别 桥和策略模式个人认为非常相似,都是强调将实现与抽象分离,是否可以认为桥模式本身包含策略模式呢? [解决办法]
引用: BRIDGE? 早上碰到MM,要说早上好,晚上碰到MM,要说晚上好;碰到MM穿了件新衣服,要说你的衣服好漂亮哦,碰到MM新做的发型,要说你的头发好漂亮哦。不要问我“早上碰到MM新做了个发型怎么说”这种问题,自己用BRIDGE组合一下就行了 桥接模式:将抽象化与实现化脱耦,使得二者可以独立的变化,也就是说将他们之间的强关联变成弱关联,也就是指在一个软件系统的抽象化和实现化之间使用组合/聚合关系而不是继承关系,从而使两者可以独立的变化。 STRATEGY? 跟不同类型的MM约会,要用不同的策略,有的请电影比较好,有的则去吃小吃效果不错,有的去海边浪漫最合适,单目的都是为了得到MM的芳心,我的追MM锦囊中有好多Strategy哦。 策略模式:策略模式针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。策略模式把行为和环境分开。环境类负责维持和查询行为类,各种算法在具体的策略类中提供。由于算法和环境独立开来,算法的增减,修改都不会影响到环境和客户端。 桥接就是将多个抽象的东西串起来完成一个更复杂的事 策略模式是针对某个接口具有多种不同的实现 学习了。
是不是可以理解成这样:可能2个模式的实现会相差不大,但他们最主要的区别在于应用的意图呢?
[解决办法] 当一个事物有两个维度的强变化时就需要用到Bridge桥模式。
比如:要开发坦克游戏,坦克有多种型号。这是一种维度。当这款游戏要在PC平台和Mobile平台上一起使用时,这又是一种维度。两个维度一起起作用,这个时候就需要用到Bridge桥模式了。
伪代码示例:
//第一个维度:坦克
Public Abstract class Tank{Flat flat;} //提供一个平台的引用
Public class Tank50 : Tank{Flat flat;}
//第二个维度:平台
Public Abstract class Flat{}
Public class PcFlat : Flat{}
Public class MobileFlat : Flat{}
//桥接
Public class Tank50_PcFlat{PcFlat pcflat} //传入Pc平台的引用
至于策略模式还在学习中。呵呵