在商城系统中使用设计模式--简单工厂模式

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吧。

posted @ 2019-03-29 01:00  那个男孩很坏  阅读(1809)  评论(0编辑  收藏  举报