设计模式02-工厂方法

mac2024-04-06  36

一、介绍

工厂方法属于创建型模式,它的特点是将创建方法延迟到子类,由子类工厂决定创建什么产品。

二、类图分析

Client:用户类 PayApi:父产品,支付api的顶层接口类 AliPayApi:子产品,实现了PayApi接口方法的类 WechatPayApi:子产品,实现了PayApi接口方法的类 PayApiFactory:父工厂,一个抽象类,子类需要重写createPayApi()方法去创建产品 AliPayApiFactory:子工厂,重写createPayApi()方法创建AliPayApi产品 WechatPayApiFactory:子工厂,重写createPayApi()方法创建WechatPayApi产品

三、代码实现

public interface PayApi { void pay(); } public class AliPayApi implements PayApi{ @Override public void pay() { System.out.println("AliPay"); } } public class WechatPayApi implements PayApi{ @Override public void pay() { System.out.println("WechatPay"); } } public abstract class PayApiFactory { abstract PayApi createPayApi(); public void pay() { createPayApi().pay(); } } public class AliPayApiFactory extends PayApiFactory { @Override PayApi createPayApi() { return new AliPayApi(); } } public class WechatPayApiFactory extends PayApiFactory{ @Override PayApi createPayApi() { return new WechatPayApi(); } }

本次demo以支付为例,使用时只要调用 PayFactory payFactory = new WechatPayFactory(); payFactory.pay(); 如果需要接入新的支付方式,只要创建新的支付产品及工厂即可。

优点:扩展方便,符合开闭原则 缺点:编码较复杂,新的产品需要新的工厂

最新回复(0)