在商城系统中使用设计模式--简单工厂模式
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吧。