学习笔记

Android源码设计模式_4策略模式
Publish: 2018/8/16   

定义

策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。

使用场景

  1. 针对同一类型问题的多种处理方式,仅仅是具体行为有差别时。
  2. 需要安全地封装多种同一类型的操作时。
  3. 出现同一抽象类有多个子类,而又需要使用if-else或者switch-case来选择具体子类时。

简单实现

 public class Context{
     private Stragety mStragety;

     public void setStragety(Stragety mStragety){
         this.mStragety=mStragety;
     }

     public void algorithm(){
         mStragety.algorithm();
     }

     public static void main(String[] args){
         Context context=new Context();
         context.setStragety(new ConcreteStragetyA());
         context.algorithm();
         context.setStragety(new ConcreteStragetyB());
         context.algorithm();
     }
 }

 public interface Stragety{
     void algorithm();  
 }

 public ConcreteStragetyA implements Stragety{
     public void algorithm(){
         System.out.println("ConcreteStragetyA");
     }
 }

 public ConcreteStragetyB implements Stragety{
     public void algorithm(){
         System.out.println("ConcreteStragetyB");
     }
 }

优点

缺点

随着策略的增加,子类也会变得繁多。



← Android源码设计模式_5状态模式 Android源码设计模式_3原型模式 →

Powered by Hexo, Theme designs by @hpcslag.
Style-Framework Tocas-UI designs by @yamioldmel