Java设计模式:策略模式

作者: 废柴傻狗 | 来源:发表于2016-04-26 16:26 被阅读334次

策略模式,顾名思义,我是没看懂。

不知道为什么称它为策略模式,但通过学习,我知道这种模式可以让我的代码分工明确,实现了操作和使用者的解耦。

策略模式共分三个部分:

1.你的操作方法的接口,定义了一个实现的方法

2.你的操作方法的具体实现

3.环境类,用来对具体的操作方法进行设置,比如执行等


举个栗子🌰!

需求:我有三个算法,分别可以解决三个问题,那么我得看看问题是什么来选用不同的方法。

解决方法1:

int questionID = 1; //假设问题是第一个,id为1

if(questionID == 1)

{

fun1();

} else if(questionID == 2)

{

fun2();

}else if(questionID == 3)

{

fun3();

}

以上就是对问题编号先进行判断,通过if语句来找到对应的实现方法。完美!

不好的一点就是,如果算法特别多,再修改就会乱七八糟的,既要修改方法,又要在if语句这里进行修改,多到一定程度,我就爆炸了!BOOM!

所以,我愿意牺牲一点时间,把方法和使用分离开,这里就可以用到策略模式。

我们先写一个大接口!

interface Strategy {

void operate();

}

定义了一个operate()方法,实现这个接口的也要实现这个方法,这是我们定的规则。

再写三个复杂的算法!

class Algorithm1 implements Strategy {

@Override

public void operate() {

System.out.println("algorithm1");

}

}

class Algorithm2 implementsStrategy {

@Override

public void operate() {

System.out.println("algorithm2");

}

}

class Algorithm3 implementsStrategy {

@Override

public void operate() {

System.out.println("algorithm3");

}

}

这三个算法都实现了那个大接口。

最后写一个封装类Context:

class Context {

Strategy strategy;

public Context(Strategy strategy) {

this.strategy= strategy;

}

public void operate(){

strategy.operate();

}

}

封装类的意义就是可以对Strategy进行操作,有时候是可以去掉的。

调用方法:

Context context =newContext(new Algorithm1());

context.operate();

这样就把方法解耦出来,形成一个实现Strategy的单独的类了,我们增添删改算法的时候,就会清晰很多,但是if还是要写的!(我去,这不还是很乱么!)策略模式只是做解耦,并不能把判断语句都取代了呀。如果你想让判断语句好看,你可以用switch,用反射辣。

相关文章

  • java建造者模式

    其他设计模式java单例模式java建造者模式java策略模式java代理模式java观察者模式java适配器模式...

  • java单例模式

    其他设计模式java单例模式java建造者模式java策略模式java代理模式java观察者模式java适配器模式...

  • java外观模式

    其他设计模式java单例模式java建造者模式java策略模式java代理模式java观察者模式java适配器模式...

  • java适配器模式

    其他设计模式java单例模式java建造者模式java策略模式java代理模式java观察者模式java适配器模式...

  • java观察者模式

    其他设计模式java单例模式java建造者模式java策略模式java代理模式java观察者模式java适配器模式...

  • java代理模式

    其他设计模式java单例模式java建造者模式java策略模式java代理模式java观察者模式java适配器模式...

  • java策略模式

    其他设计模式java单例模式java建造者模式java策略模式java代理模式java观察者模式java适配器模式...

  • Java 常用设计模式简例

    简述Java常用设计模式 简述Java常用设计模式及设计原则 strate---------策略模式针对接口编程,...

  • 策略模式

    参考资料:漫话:如何给女朋友解释什么是策略模式? 设计模式之策略模式(实例+Demo) Java设计模式(8)——...

  • 学习Head First设计模式Day1

    Java设计模式之设计模式 策略模式:策略模式定义了算法簇,分别封装起来,让他们之间可以互相替换,此设计模式让算法...

网友评论

    本文标题:Java设计模式:策略模式

    本文链接:https://www.haomeiwen.com/subject/jqnqrttx.html