最近看了一下设计模式,发现对策略模式和工厂模式有一个问题:
策略模式由客户端角色,环境角色,抽象算法角色,具体算法角色组成,通过环境角色来调用具体的算法,其间还可以用工厂辅助。
但是我现在的问题是,如果我直接通过一个简单工厂调用算法明显会更方便,为什么还要借助于环境类?策略模式的作用到底适合用在什么地方?
可能问题有点白痴,但是我现在确实存在这个困惑,望有心人士给予解答,万分感谢!!
策略模式能和工厂模式区别:一个注重对象的行为,一个注重对象的创建
比如像银行的利息算法,这就可以作为一个策略模式来实现,
利息的计算方法有超多种,每一种都是一个具体策略类,关注的是行为!
它所谓的环境类也完全可以由简单工厂来替换,你关注点错了,
对于策略模式,你需要关心的就是抽象算法角色,具体算法角色,其它的中是辅助用来说明这个模式而已
策略模式的作用到底适合用在什么地方?
抽象具体实现类(有同一个接口),
简单工厂是创建实现类的.
策略模式中在不同的环境分别使用不用的实现类.
偶记得<
>里面有他们两的对话节目( :D ),LZ可找来看看.策略模式主要是封装算法,实现“即插即用”的效果
推荐lz阅读java与模式一书的第35章
我觉得策略模式在于方法的重用。而工厂模式在于多重可能性,出产的是对象。
前者是局部,后者是整体。