设计模式系列《策略模式》

策略模式

这玩意很简单,举个例子,就是为了让你选择解决一件事的方法。比如我上学,我可以走着去,可以可以开飞机去,可以爬过去,这些都是去上学的方法。但写在一个方法里需要很多的if和else,维护起来非常的不方便,所以推出了策略模式。

示例:向一个类里面传入不同的类,会根据传入类的不同执行不同的方法。

  • 首先写一个接口用来放需要执行的不同的方法(出行方式)。
public interface GoToSchool 
{   
    void action();
}
  • 然后创造不同的方法(出行方式),以下都是不同的方法:
public class ByFoot implements GoToSchool {
    @Override    
    public void action() {
        System.out.println("走路去上学,很累的,但是没得办法,没有钱!");    
                         }}
public class ByPlane implements GoToSchool{    
    @Override    
    public void action() { 
        System.out.println("可能学校离得远,需要飞过去把~");   
    }}
public class ByTaxi implements GoToSchool{    
    @Override    
    public void action() {
        System.out.println("什么家庭,居然搭计程车去上学,哦原来是我啊!");    
    }}
  • 根据传入的类的不同,调用该类的action方法。
public class ZSPGo {  
private GoToSchool toSchool;    
public ZSPGo(GoToSchool toSchool){       
    this.toSchool=toSchool;    
}    
public void exec(){ 
    toSchool.action();  
}}

  • 创建主方法实现它。
public class StuGoSchool {    public static void main(String[] args) {  
    ZSPGo zspGoByFoot=new ZSPGo(new ByFoot());       
    zspGoByFoot.exec();       
    System.out.println("===============");       
    ZSPGo zspGoByPlane=new ZSPGo(new ByFoot());        
    zspGoByPlane.exec();       
    System.out.println("===============");        
    ZSPGo zspGoByTaxi=new ZSPGo(new ByTaxi());        zspGoByTaxi.exec();    }}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值