android策略模式应用,2019-09-09:请谈谈策略模式原理及其应用场景?

策略模式很像简单工厂模式,后者是根据业务条件创建不同的对象,前者是根据业务条件去使用不同的策略对象。区别看下图

简单工厂模式

630dc3b36e29e0856e2983f2bfd7d93b.png

策略模式

4f9dacf2a6785b22f238d5fcfd59360e.png

主要区别在工厂类和CashContext这个两个类

工厂 类

public class ShapeFactory {

public static Shape createShape(String shape){

switch (shape){

case "circle":

return new Circle();

case "rectangle":

return new Ractangle();

}

return null;

}

}

CashContext

class CashContext{

Strategy strategy;

public CashContext(Strategy strategy ){

this.strategy = strategy;

}

//操作业务

public void method(){

strategy.method;

}

}

区别:

1工厂没有持有具体类的引用,策略构造器(CashContext)持有了具体类的引用,

2 工厂根据条件创建不同的对象,此时的策略构造器(CashContext)要在activity中做条件判断(很明显这里可以和简单工厂模式结合)

可知简单工厂一旦新增了具体类,工厂类就要做修改,但是策略模式不用修改CashContext类,他直接替换具体类。

但是当我们需要根据条件创建具体类的时候,策略模式会使得要在activity中做条件判断来确定创建什么具体类。这里又想到了使用工厂来优化。

结合简单工厂模式后的策略构造器(CashContext)

class CashContext{

Strategy strategy;

public CashContext(string condition){

switch (condition){

case "circle":

strategy = new CicleStrategy();

break;

case "rectangle":

strategy = new RectangleStrategy();

break;

}

}

//操作业务

public void method(){

strategy.method;

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值