策略模式:策略模式针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。策略模式把行为和环境分开。环境类负责维持和查询行为类,各种算法在具体的策略类中提供。由于算法和环境独立开来,算法的增减,修改都不会影响到环境和客户端。
策略模式的结构
策略模式涉及到三个角色
环境角色:持有一个Stratcgy类(策略类)的引用(此处为Dog类),
抽象策略角色:策略类,通常有一个接口或者抽象类实现(此处为Comparator)
具体策略角色:包装了相关的算法和行为(此处为DogHeightComparator和DogWeightComparator)
接口
package pattern.strategy;
//定义策略接口
//Dog使用这个接口来调用某Comparator定义的算法
public interface Comparator {
//定义一组算法
public int compare(Object o1, Object o2);
}
实现类一
package pattern.strategy;
//实现策略接口
public class DogHeightComparator implements Comparator {
//算法一
public int compare(Object o1, Object o2) {
Dog d1=(Dog)o1;
Dog d2=(Dog)o2;
if(d1.getHeight()>d2.getHeight()){
return 1;
}else if(d2.getHeight()<d2.getHeight()){
return -1;
}else{
return 0;
}
}
}
实现类二
package pattern.strategy;
//实现策略接口
public class DogWeightComparator implements Comparator {
//策略二
public int compare(Object o1, Object o2) {
Dog d1=(Dog)o1;
Dog d2=(Dog)o2;
if(d1.getWeight()>d2.getWeight()){
return 1;
}else if(d2.getWeight()<d2.getWeight()){
return -1;
}else{
return 0;
}
}
}
环境类
package pattern.strategy;
public class Dog implements Comparable{
private int weight;
private int height;
//策略的引用,可以相互替换
//private Comparator comparator=new DogWeightComparator();
private Comparator comparator=new DogHeightComparator();
public int getWeight() {
return weight;
}
public void setWeight(int weight) {
this.weight = weight;
}
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
public int compareTo(Object o) {
return this.comparator.compare(this, o);
}
}
分享到:
相关推荐
策略模式结合模板方法模式的设计思路 策略模式结合模板方法模式是策略模式的一种变形,目的是为了解决策略模式中的一些共性问题。在策略模式中,经常会出现这样一种情况,就是发现这一系列算法的实现上存在公共功能...
SpringBoot结合策略模式实战套路 策略模式是一种常用的设计模式,它可以使我们的代码更加灵活、可维护和可扩展。在SpringBoot项目中,策略模式可以与依赖注入机制相结合,实现更加灵活的业务逻辑处理。在本文中,...
桥接模式和策略模式是软件设计模式中的两种重要模式,它们在实现上有着相似之处,但各自的应用场景和设计理念有所不同。下面将详细阐述这两种模式的特点、区别以及它们在实际编程中的应用。 首先,桥接模式(Bridge...
设计模式之策略模式 鸭子问题 策略模式是一种经典的设计模式,通过鸭子问题,可以让学习者更好地了解设计模式的概念和实现。策略模式的主要思想是定义一系列的算法,并将每一个算法封装起来,使它们可以相互替换。...
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在Java中,策略模式通过定义一系列的算法,并将每一个算法封装起来,使它们可以相互替换,让算法独立于使用它的客户而变化。这种模式通常用于处理多种...
在Spring框架中,策略模式是一种常见的设计模式,它允许我们定义一组可互换的策略,这些策略可以在运行时根据需求动态选择。这篇文章将深入探讨如何在Spring中运用策略模式,并结合源码分析其工作原理。 策略模式的...