关于设计模式一点使用心得

  最近要实现一个算法,根据服务器返回值的来实现,不同的算法。比如返回值为1,则实现算法一;返回2,则实现算法二;。。。以此类推。好了,现在动手开始写了,为了使代码实现可扩展和复用,想到了使用设计模式。
1.定义一个接口

public interface IGenerateImage {
    void generate();
}

2.实现四种不同的算法
算法一:

public class GenerateImage1 implements IGenerateImage {

    GenerateImage1() {
    }

    @Override
    public void generate() {
        Log.i("aaa","执行算法一");
    }
}

算法二:

public class GenerateImage2 implements IGenerateImage {

    GenerateImage2() {
    }

    @Override
    public void generate() {
        Log.i("aaa","执行算法二");
    }
}

算法三:

public class GenerateImage3 implements IGenerateImage {

    GenerateImage3() {
    }

    @Override
    public void generate() {
        Log.i("aaa","执行算法三");
    }
}

算法四:

public class GenerateImage4 implements IGenerateImage {

    GenerateImage4() {
    }

    @Override
    public void generate() {
        Log.i("aaa","执行算法四");
    }
}

3.封装一个算法的分配器

public class GenerateImageType {

    private final int PURIMAGE = 1;
    private final int FOURPT = 2;
    private final int FOURPTMUL = 3;
    private final int FOURPTCOV = 4;

    static private Context mContext;
    static int mType;
    private IGenerateImage mIGenerateImage;

    static GenerateImageType mInstance;


    private GenerateImageType() {

    }

    public static GenerateImageType getInstance(Context context, int type) {
        if (mInstance == null) {
            mInstance = new GenerateImageType();
        }
        mContext = context;
        mType = type;
        return mInstance;
    }

    public void generate() {
        switch (mType) {
            case PURIMAGE:
                mIGenerateImage = new GenerateImage1();
                break;
            case FOURPT:
                mIGenerateImage = new GenerateImage2();
                break;
            case FOURPTMUL:
                mIGenerateImage = new GenerateImage3();
                break;
            case FOURPTCOV:
                mIGenerateImage = new GenerateImage4();
                break;
            default:
                break;
        }
        if (mIGenerateImage != null) {
            mIGenerateImage.generate();
        }
    }
}

4.客户端调用

GenerateImageType.getInstance(context, type).generate();

  打算写一个策略模式的,看着样子成了一个工厂模式了。主要的目的就是实现不同算法的分离。修改一个不影响其他的算法。如果添加新算法或者删除一个老算法,只需修改少量的代码即可。
  总之,设计模式主要是为了实现现有的功能,也不要过于迷信于某种情况下必须采用某种设计模式。只有充分理解这些设计模式,才能做到以无形胜有形。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wb175208

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值