java设计模式之策略设计模式

策略模式(Strategy Pattern)是设计模式中的一种行为型模式,旨在定义一系列算法,将每一个算法封装起来,并使它们可以互相替换。策略模式让算法独立于使用它的客户端独立变化。

一:策略模式的组成

    上下文(Context):持有对某个策略对象的引用,并且可以在运行时动态地更换策略。

    策略接口(Strategy):定义一个统一的接口,以便所有具体策略类实现。

    具体策略(ConcreteStrategy):实现策略接口的具体算法。

二 策略模式的结构


   Strategy:策略接口,通常包含一个方法签名,所有具体策略类都实现这个方法。

   public interface Strategy{ voidexecute();}


   ConcreteStrategyA:具体策略A实现。

  public class Concrete StrategyA implements Strategy{@Override public void execute(){         System.out.println("Executing strategy A");    }}


ConcreteStrategyB:具体策略B实现

public class ConcreteStrategyB implements Strategy{@Override public void execute(){        System.out.println("Executing strategy B");    }}


Context:上下文类,持有对策略对象的引用并委托策略对象来执行算法。

public class Context{privateStrategy strategy;publicContext(Strategy strategy){this.strategy = strategy;    }public void setStrategy(Strategy strategy){this.strategy = strategy;    }public void executeStrategy(){ strategy.execute();  }}

具体项目中使用示例:

第一步:某房屋隐患巡查分为周期和临时巡查两种类型,我们建立一个通用接口,这个接口继承了spring的IntitalizingBean接口,用于在spring容器初始化实例完成之后,将对象放入工厂缓存。

图1

第二步:工厂类用于存储实现通用接口的实例对象,里面有两个方法,gethander方法就是根据具体的实例对象类型获取实例对象,register方法注册通用接口实例类到缓存对象中,此方法在通用接口实现类中会调用。

图2

第三步:建立具体周期巡查任务执行类,实现第一步通用接口方法,同时将此类通过工厂的注册方法注册工厂类中

图3

第四步:建立具体临时巡查任务执行类,实现第一步通用接口方法,同时将此类通过工厂的 注册方法注册工厂类中(类似于第三步)

图4

第五步:用具体类型巡查任务的方法,通过工厂类根据不同的任务类型获取对应的具体实例,然后调用实例方法。

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值