美文网首页工作生活
android 源码设计模式读书笔记(四)工厂模式和策略模式

android 源码设计模式读书笔记(四)工厂模式和策略模式

作者: 刘景昌 | 来源:发表于2019-07-03 13:32 被阅读0次

把这两个一起写 因为他们两个UML的代码接口非常的相似
工厂模式代码结构图


image.png

策略模式UML


image.png

在我们看完结构图后 感觉位移不同的就是Factory个Context 接下来我们取用代码实现以下看看具体有什么区别
公共的

public interface Pay {
    void pay();
}
public class AliPay implements Pay {
    private static final String TAG = "AliPay";

    @Override
    public void pay() {
        Log.e(TAG, "AliPay");
    }
}
public class WeChatPay implements Pay {
    private static final String TAG = "WeChatPay";

    @Override
    public void pay() {
        Log.e(TAG, "WeChatPay");
    }
}

工厂模式:

public class PayFactory {

    public static Pay creatPay(String payTye) {
        Pay pay = null;
        switch (payTye) {
            case "WechatPay":
                pay = new WeChatPay();
                break;
            case "AliPay":
                pay = new AliPay();
                break;
        }
        return pay;
    }

}

策略模式:
public class MyPay {
private Pay pay;

public MyPay(Pay pay) {
    this.pay = pay;
}

public void toPay() {
    pay.pay();
}

}
现在我们来在代码上看一下不同
1.接受参数不同:工厂模式接受的是一个字符串 策略模式接受的是一个实体类
2.返回结果不同:工厂模式返回的是一个实体类 而策略模式直接执行方法。
总结简单工厂模式和策略模式
1.从类型上讲:简单的工厂模式处于创建型模式,而策略模式属于行为型模式
2.简单工厂模式:根据用户选择的条件,来帮用户创建一个对象
策略模式:用户给它一个创建好的对象,帮助用户去做一些事情
优缺点
通过比较客户端的代码发现:
  简单工厂模式:将对象的选择创建交给了简单工厂类,客户端只需要输入相应的条件就可以,不用负责对象的创建,但是需要客户端自己调用算法类的方法。但是一旦需要增加新的运算类,比如开根运算,就要去修改简单工厂类。
  策略模式:对象的选择创建仍需要自己来做,但是将调用方法的职责交给了策略类。一旦需要增加新的策略就需要添加新的子类 而且还要修改客户端。

相关文章

网友评论

    本文标题:android 源码设计模式读书笔记(四)工厂模式和策略模式

    本文链接:https://www.haomeiwen.com/subject/scythctx.html