设计模式:策略模式

策略模式很大方面是为了解决代码中多层嵌套if else的问题。当某一类业务有共同特性时,并且分为多个场景要走不同的逻辑时,比如if(我是人) deal(我要吃饭) if(我是牛) deal(我要吃草)if(我是大熊猫) deal(我要吃竹子)  这样如此多的业务的话 会变成if() else if() else if() else{} 如果中间if中再带if判断条件,整个代码看起来就晕掉。稍微看下实际代码这么写有多乱

 这时候可以使用策略模式美化代码。

定义一个共同接口

public interface Person {
    void eat();
}

Zs Ls Ww是三个人 例比上面的不同品种吃东西

public class Zs implements Person{
    @Override
    public void eat() {
        System.out.println("张三吃饭了");
    }
}


public class Ls implements Person{
    @Override
    public void eat() {
        System.out.println("李四干饭了");
    }
}

public class Ww implements Person{
    @Override
    public void eat() {
        System.out.println("王五干饭了");
    }
}

然后建立一个策略类,后续代码中可直接通过此策略类来达到具体目的

public class Strategy {
    private Person person;

    public Strategy(Person person){
        this.person = person;
    }

    public void excute(){
        person.eat();
    }
}

测试类

public class Test {
    public static void main(String[] args) {
        Strategy strategy = new Strategy(new Ls());
        strategy.excute();

        Strategy strategy1 = new Strategy(new Zs());
        strategy1.excute();
    }
}

这样的话看上去代码维护性会变得更高,如果新增了某个人的实现,不需要改变源代码,只需要新增一个实现类,然后可以直接传入调用。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值