您的位置:首页 > 其它

设计模式——策略模式

2015-06-16 15:24 113 查看
一、策略模式概述

策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。

策略模式的结构

封装类:也叫上下文,对策略进行二次封装,目的是避免高层模块对策略的直接调用。

抽象策略:通常情况下为一个接口,当各个实现类中存在着重复的逻辑时,则使用抽象类来封装这部分公共的代码,此时,策略模式看上去更像是模版方法模式。

具体策略:具体策略角色通常由一组封装了算法的类来担任,这些类之间可以根据需要自由替换。

策略模式是一种行为型模式。

二、策略模式代码示例

已排序算法为例,先定义一个策略接口

public interface Strategy {
public void sort();
}


再定义两个具体算法实现上述接口

public class BubbleSort implements Strategy {

@Override
public void sort() {
System.out.println("冒泡排序");
}

}

public class QuickSort implements Strategy {

@Override
public void sort() {
System.out.println("快速排序");
}

}


定义封装类

public class Context {
private Strategy strategy;

public Context(Strategy strategy) {
this.strategy = strategy;
}

public void sort() {
strategy.sort();
}
}


客户端调用

public class Client {
public static void main(String[] args) {
Context bubble = new Context(new BubbleSort());
System.out.println("执行冒泡排序");
bubble.sort();
System.out.println("--------------");
Context quick = new Context(new QuickSort());
System.out.println("执行快速排序");
quick.sort();
System.out.println("--------------");
}
}


执行结果

执行冒泡排序
冒泡排序
--------------
执行快速排序
快速排序
--------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  设计模式