暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

工厂方法模式

260

工厂方法模式(非常常用的创建型模式)

核心点:具体的工厂返回的是一个抽象的产品,外界在调用者知道自己实际创建的是什么产品。

思路总结:

1、抽象产品,提供具体产品公共的抽象方法

2、抽象工厂,提供具体工厂公共的抽象方法

3、每个具体产品的具体工厂用于创建对应的产品

后续如果需要扩展比如第三方银行支付进来只需要

1、设计银行支付的具体产品实现Pay接口

2、设计银行支付的具体工厂实现PayFactory接口

  • 代码实现

抽象产品

    对一般具体产品的公共功能进行抽象,这里抽取的是一般公共支付产品都有下单的功能。

    public interface Pay {
    /**
    * 统一下单
    */
    void unifiedorder();
    }

    具体产品

        通过具体的产品实现抽象产品中的功能,怎么实现由具体产品自己定义。

      public class AliPay implements Pay {
      @Override
      public void unifiedorder() {
      System.out.println("支付宝支付接口");
      }
      }


      public class WechatPay implements Pay {
      @Override
      public void unifiedorder() {
      System.out.println("微信支付接口");
      }
      }

      抽象工厂

          对一般具体工厂的公共功能进行抽象,这里抽象工厂的功能是创建抽象产品。

        public interface PayFactory {
        Pay getPay();
        }

        具体工厂

            实现抽象工厂中的功能,即不同的具体工厂产生的产品是不一样的,但这些产品有具有一些公共特性。

          public class AliPayFactory implements PayFactory{
          @Override
          public Pay getPay() {
          return new AliPay();
          }
          }


          public class WechatPayFactory implements PayFactory{
          @Override
          public 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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

            评论