• 设计模式-工厂模式


    设计模式-工厂模式

      工厂模式是为了解耦:把对象的创建和使用的过程分开。具体实现就是当某些方法有共同的行为,但是实现不一样,我们可以把共同的行为提成一个接口,让不同实现的类实现该接口,我们在通过一个工厂类,根据我们传入的参数进行调用我们制定的实现方法。如:支付是一种行为,具体实现有支付宝支付、微信支付、银联支付。当我们要使用支付宝支付的时候就向工厂方法传入一个参数,工厂方法通过一个参数判断调用我们指定的方法。具体代码如下:

    一、抽象公共接口(支付)

    /**
     *  @author: cyb
     *  @Date: 2020-09-24 0:14
     *  @Description:支付公共行为接口
     */
    public interface PayService {
        /***
         * 支付方法
         */
        void pay();
    }

    一、具体实现方法类一(支付宝支付)

    /**
     *  @author: cyb
     *  @Date: 2020-09-24 0:15
     *  @Description:具体实现方法-支付宝支付
     */
    public class AliPay implements PayService {
        public void pay() {
            System.out.println("支付宝支付");
        }
    }

    二、具体实现方法类二(微信支付)

    /**
     *  @author: cyb
     *  @Date: 2020-09-24 0:16
     *  @Description:支付的另一实现-微信支付
     */
    public class WeixinPay implements PayService {
        public void pay() {
            System.out.println("微信支付");
        }
    }

    三、工厂方法

    /**
     *  @author: cyb
     *  @Date: 2020-09-24 0:11
     *  @Description:创建对象工厂
     */
    public class PayFactory {
    
        public static PayService getPay(int payType){
            PayService payService=null;
            switch (payType){
                case 1:
                   return payService=new AliPay();
                case 2:
                 return    payService=new WeixinPay();
            }
            return null;
        }
    }

    四、测试方法

    public class test {
        public static void main(String[] args) {
           PayService payService= PayFactory.getPay(1);
           payService.pay();
        }
    
    }

    五、打印结果

    以上内容为本篇博客内容,后续将继续为大家分享后续设计模式。

    转载请说明出处,本人博客地址为:https://www.cnblogs.com/chenyuanbo/

  • 相关阅读:
    C++对象模型
    Session、Application、Cache
    JavaScript事件的几个细节
    algorithm(算法)
    【REST WCF】30分钟理论到实践
    实践Scrum
    调试PostSharp DEMO 遇到的问题
    6.8 按字符串中的部分内容排序
    QObject就有eventFilter,功能很强(随心所欲的进行处理,比如用来QLineEdit分词)
    QPainter就是手里的作图工具,只需要三洋东西:笔(颜色,宽度,样式),字体(写字),刷子(大面积作画),这里有三个典型例子
  • 原文地址:https://www.cnblogs.com/chenyuanbo/p/13722056.html
Copyright © 2020-2023  润新知