常用的设计模式(笔记)——工厂模式

2022-03-16  本文已影响0人  红鲤鱼与绿鲤鱼与驴与鱼

工厂模式在代码中很常见

简单工厂

比如我们现在有两种支付方式 微信支付、支付宝支付这两种,这样我们就能用工厂模式去创建我们需要的支付方式

/**
 * 支付宝的支付方式
 */
public class AliPay {
    public void pay(){
        System.out.println("支付宝支付");
    }
}

/**
 * 微信的支付方式
 */
public class WeChatPay {
    public void pay(){
        System.out.println("微信支付");
    }
}

有了上面两个支付方式,现在我们还少一个工厂,接下来创建一个工厂类

/**
 * 生产支付式的工厂
 */
public class PayFactory {
    /**
     * 返回微信支付方式
     */
    public WeChatPay createWechat() {
        return new WeChatPay();
    }

    /**
     * 返回支付宝支付方式
     */
    public AliPay createAlipay() {
        return new AliPay();
    }
}

以上就是简单工厂,够简单吧。很明显现在的代码扩展性不是很好

抽象工厂

抽象工厂需要有哪些东西?

还是以上面支付方式为例,微信支付宝 都有pay()方法,所以抽象产品类如下

public interface Pay {
    void pay();
}

具体的产品类

/**
*具体的支付类——微信
*/
public class WechatPay implements Pay {
    @Override
    public void pay() {
        System.out.println("微信支付");
    }
}
/**
*具体的支付类——支付宝
*/
public class Alipay implements Pay {
    @Override
    public void pay() {
        System.out.println("支付宝支付");
    }
}

接下来是重点,抽象工厂类

/**
 * 支付方式的抽象工厂
 */
public abstract class AbstractPayFactory {
    /**
    *创建微信支付方式
    */
    public abstract Pay createWeChatPay();
    /**
    *  创建支付宝支付方式
    */
    public abstract Pay createAlipay();
}

具体的工厂类

public class PayFactory extends AbstractPayFactory {
    @Override
    public Pay createWeChatPay() {
        return new WechatPay();
    }

    @Override
    public Pay createAlipay() {
        return new Alipay();
    }
}

使用方式如下:

    public static void main(String[] args) {
        PayFactory factory = new PayFactory();

        Pay weChatPay = factory.createWeChatPay();
        weChatPay.pay();

        Pay alipay = factory.createAlipay();
        alipay.pay();
    }
}
上一篇 下一篇

猜你喜欢

热点阅读