设计模式笔记之Strategy Pattern

策略模式: Strategy Pattern


概括: 定义了算法家族(interface),分别分装起来(实现该interface), 算法之间可以互相替换, 把它们内嵌入工作类提供给用户使用, 从而不会影响用户使用的接口,而只需要维护工作类中使用的具体算法。


关键字: Has a


重点: 使用Has-a取代简单的Is-a关系, 通过在抽象基类中增加一个策略类来达到Has-a的关系,这样所有的子类,都可以使用自己设定的策略来完成工作.


类图:



简单例子: 摘录自VTC Design Pattern教程

抽象基类:

public abstract class Vehicle  
{
  private GoAlgorithm goAlgorithm;
 
  public Vehicle()  
  {
  }
 
  public void setGoAlgorithm (GoAlgorithm algorithm)  
  {
    goAlgorithm = algorithm;
  }
 
  public void go() {
    goAlgorithm.go();
  }
}
----------------------

策略接口及类:

public interface GoAlgorithm  
{
  public void go();
}

public class GoByDrivingAlgorithm implements GoAlgorithm  
{
  public void go()  
  {
    System.out.println("Now I'm driving.");
  }
}

public class GoByFlyingAlgorithm implements GoAlgorithm  
{
  public void go() {
    System.out.println("Now I'm flying.");
  }
}

--------------------------------------------------------------------------------------

实际用户子类:

public class Jet extends Vehicle  
{
  public Jet()  
  {
    setGoAlgorithm(new GoByFlyingFastAlgorithm());
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值