zoukankan      html  css  js  c++  java
  • 在商城系统中使用设计模式简单工厂模式

    1.简单工厂模式是属于创建型模式,又叫做静态工厂方法模式。
    它的实现方式是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。


    2.简单工厂模式由三种角色组成: 
    (1)工厂角色:简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类的创建产品类的方法可以被外界直接调用,创建所需的产品对象。
    (2)抽象产品角色:简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。 
    (3)具体产品角色:是简单工厂模式的创建目标,所有创建的对象都是充当这个角色的某个具体类的实例。

    3.场景:在一个商城系统中,用户可以选择三种支付方式,微信支付,支付宝支付,余额支付。

    4.实现:

    我们将创建一个 PaymentMethod 接口和实现 PaymentMethod 接口的实体类。下一步是定义工厂类 PayFactory

    Main是演示我们简单工厂模式的入口。

    UML图如下:

     步骤1.创建接口类

    public interface PaymentMethod {
        void pay();
    }

    步骤2.实现接口类

    public class Alipay implements PaymentMethod {
        @Override
        public void pay() {
            System.out.println("支付宝支付");
        }
    }
    public class BalancePay implements PaymentMethod {
        @Override
        public void pay() {
            System.out.println("余额支付");
        }
    }
    public class WechatPay implements PaymentMethod {
        @Override
        public void pay() {
            System.out.println("微信支付");
        }
    }

    步骤3.创建一个工厂,生成基于给定信息的实体类的对象。

    public class PayFactory {
    
        public PaymentMethod getPayment(String payType){
    
            switch (payType){
    
                case "alipay":
                    return new Alipay();
                case "wechatPay":
                    return new WechatPay();
                case "balancePay":
                    return new BalancePay();
    
                default:
                    System.out.println("支付方式错误");
    
            }
            return null;
    
        }
    
    }

    步骤4.使用该工厂,通过传递类型信息来获取实体类的对象。

    public class Main {
    
        public static void main(String[] args) {
    
            PayFactory payFactory = new PayFactory();
    
            PaymentMethod paymentMethod = payFactory.getPayment("alipay");
    
            paymentMethod.pay();
    
        }
    
    }
     附上demo源码:

    https://github.com/littleStone-chan/design-patternsIn-mall/tree/master/simple-factory

    在工作中,不能灵活的时候设计模式。希望通过这次的学习,可以加深对设计模式对理解。

    接下来会继续整理出自己在工作对时候可以使用对设计模式,不对望指点。如果文章对您有帮助,github给个start吧。

  • 相关阅读:
    跨域的异步请求二
    cloneNode在兼容问题
    实现here document的一些副产品
    跨域的异步请求三
    getBasePath 函数第二版
    跨域的异步请求一
    IE6的base标签导致页面结构大混乱
    元素的自定义属性
    IE6与IE7封杀器与浏览器杀手
    ImageMagick 打水印支持透明度设置
  • 原文地址:https://www.cnblogs.com/boychen/p/10618868.html
Copyright © 2011-2022 走看看