前言:
现在各位老铁们对“java 状态模式和策略模式”大约比较讲究,各位老铁们都想要分析一些“java 状态模式和策略模式”的相关知识。那么小编也在网络上汇集了一些关于“java 状态模式和策略模式””的相关资讯,希望看官们能喜欢,同学们一起来学习一下吧!策略模式其实是为了解决,针对同一个问题有多个不能的解决方式,也就是说提供了多种不同的解决策略。比如,我们对一个数组进行排序。那么这里就有冒泡排序、快速排序、归并排序等等不同的算法,这里我们就可以说这些是不同的策略。可以把这些不同的排序算法设计成策略模式。
策略模式定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使用算法的客户。需要设计一个接口,为一系列实现类提供统一的方法,多个实现类实现该接口,设计一个抽象类(可有可无,属于辅助类),提供辅助函数。.
策略模式的重心
策略模式的重心不是如何实现算法,而是如何组织、调用这些算法,从而让程序结构更灵活,具有更好的维护性和扩展性。
算法的平等性
策略模式一个很大的特点就是各个策略算法的平等性。对于一系列具体的策略算法,大家的地位是完全一样的,正因为这个平等性,才能实现算法之间可以相互替换。所有的策略算法在实现上也是相互独立的,相互之间是没有依赖的。
所以可以这样描述这一系列策略算法:策略算法是相同行为的不同实现。
运行时策略的唯一性
运行期间,策略模式在每一个时刻只能使用一个具体的策略实现对象,虽然可以动态地在不同的策略实现中切换,但是同时只能使用一个。
公有的行为
经常见到的是,所有的具体策略类都有一些公有的行为。这时候,就应当把这些公有的行为放到共同的抽象策略角色Strategy类里面。当然这时候抽象策略角色必须要用Java抽象类实现,而不能使用接口。
优、缺点
优点:
1、可以动态的改变对象的行为
缺点:
1、客户端必须知道所有的策略类,并自行决定使用哪一个策略类
2、策略模式将造成产生很多策略类
“我们相信人人都可以成为一个IT大神,现在开始,选择一条阳光大道,助你入门,学习的路上不再迷茫。这里是北京尚学堂,初学者转行到IT行业的聚集地。"
标签: #java 状态模式和策略模式