策略模式
2020-07-21 本文已影响0人
Stephenwish
第一步,正常定义一个接口
public interface DealStrategy {
void dealMythod();
}
第二步,搞几个实现这个接口实例
//第一种实现方式(新建一个类)
public class DealWeChat implements DealStrategy{
@Override
public void dealMythod() {
System.err.println("wechat");
}
}
//第二种实现方式(新建一个类)
public class DealSina implements DealStrategy{
@Override
public void dealMythod() {
System.err.println("SinaDealWith");
}
}
//第三种实现方式(新建一个类)
public class DealWeiBo implements DealStrategy{
@Override
public void dealMythod() {
System.err.println("weibo");
}
}
上面只是最简单接口实现,还没涉及到模式
第三步(核心),新建一个类通过构造器形式把接口包进来,然后新类间接包装原接口的方法作为自己的实现
public class DealContext {
//引入接口类
private DealStrategy dealStrategy;
//以构造器方式实例化
public DealContext(DealStrategy dealStrategy) {
this.dealStrategy = dealStrategy;
}
//包装下引入类方法,作为自己方法
public void doanything() {
this.dealStrategy.dealMythod();
}
}
第四步(使用),新建一个场景类使用
public class Client{
public static void main(String[] args) {
//实例一个具体策略
DealStrategy myStrategy=new DealSina();
//实例化一个包了具体策略类的类
DealContext context=new DealContext(myStrategy);
//再用包了具体策略类做事情
context.doanything();
}
}
模式很简单,但是要从别人的代码里读出是策略模式要有经验的,因为别人的接口实现可能有多个