工厂方法模式(非常常用的创建型模式)
核心点:具体的工厂返回的是一个抽象的产品,外界在调用者知道自己实际创建的是什么产品。
思路总结:
1、抽象产品,提供具体产品公共的抽象方法
2、抽象工厂,提供具体工厂公共的抽象方法
3、每个具体产品的具体工厂用于创建对应的产品

后续如果需要扩展比如第三方银行支付进来只需要
1、设计银行支付的具体产品实现Pay接口
2、设计银行支付的具体工厂实现PayFactory接口
代码实现
抽象产品
对一般具体产品的公共功能进行抽象,这里抽取的是一般公共支付产品都有下单的功能。
public interface Pay {/*** 统一下单*/void unifiedorder();}
具体产品
通过具体的产品实现抽象产品中的功能,怎么实现由具体产品自己定义。
public class AliPay implements Pay {@Overridepublic void unifiedorder() {System.out.println("支付宝支付接口");}}public class WechatPay implements Pay {@Overridepublic void unifiedorder() {System.out.println("微信支付接口");}}
抽象工厂
对一般具体工厂的公共功能进行抽象,这里抽象工厂的功能是创建抽象产品。
public interface PayFactory {Pay getPay();}
具体工厂
实现抽象工厂中的功能,即不同的具体工厂产生的产品是不一样的,但这些产品有具有一些公共特性。
public class AliPayFactory implements PayFactory{@Overridepublic Pay getPay() {return new AliPay();}}public class WechatPayFactory implements PayFactory{@Overridepublic Pay getPay() {return new WechatPay();}}
main方法调用
public class Main {public static void main(String[] args) {//工厂方法模式PayFactory aliPayFactory = new AliPayFactory();Pay aliPay = aliPayFactory.getPay();aliPay.unifiedorder();PayFactory wechatPayFactory = new WechatPayFactory();Pay wechatPay = wechatPayFactory.getPay();wechatPay.unifiedorder();}}
算法永久班刷题直播课详情如下:
奔跑的小梁,公众号:梁霖编程工具库leetcode刷题永久班直播教学,手把手带你刷题,价格调整通知,2022年11月14日
文章转载自梁霖编程工具库,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




