设计模式-策略模式

2020-09-12  本文已影响0人  dashingqi

定义

UML类图

策略模式UML图.png
角色解释

具体使用

创建抽象策略类(IImageStragety)
public interface IImageStragety{
    void onLoadImage(String url);
}
创建具体的策略类
创建环境类
public class ImageLoadContext{
  private volatite static  IImageLoadStragety mImageLoadStragety;
  private ImageLoadContext(){
    //默认使用Glide的加载框架
    mImageLoadStragety = GlideLoadImageStragety();
  }
  
  
  public static IImageLoadStragety getInstance(){
        return ImageLoadHolder.INSTANCE;
  }
  
  
  /**
    * 用于设置图片框架
    */
  public void setImageStragety(IImageStragety imageLoadStragety){
    mImageLoadStragety = imageLoadStragety;
  }
  
  public void loadImage(String url){
    mImageLoadStragety.onLoadImage(url);
  }
  
  /**
  * 静态内部类的形式,创建ImageLoadContext实例
  */
  private static class ImageLoadHolder{
    priavte static final ImageLoadContext INSTANCE = new ImageLoadContext()
  }
}

使用场景

优点

缺点

上一篇下一篇

猜你喜欢

热点阅读