美文网首页工作生活
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