设计模式之工厂模式

什么是工厂设计模式:

工厂设计模式是为了解耦:把对象的创建和使用的过程分开。

工厂模式可以降低代码复用,比如举个例子,如果创建一个对象过程很复杂,需要一定的代码量,而且很多地方都需要用到这个对象,如果我们每用一次都创建一下这个对象,那么就会有很多的重复代码,我们可以把创建这个对象的代码放到工厂里面统一管理,既减少了重复的代码,也方便后续维护,工厂模式可以减少错误,因为工厂管理了对象的创建逻辑,使用者不需要知道具体的创建过程,只管使用即可,减少了使用者因为创建逻辑导致的错误。

工厂模式可以分为简单工厂,工厂方法,抽象工厂,静态工厂

我们来实现一个例子:比如支付:

我们把支付的实现放到工厂里面去去管理:

定义一个共同方法:


public interface PayService {

    /**
     *支付方法
     */
    public void pay();
}

定义具体实现:

public class AliService implements PayService {

    /**
     * 支付方法
     */
    @Override
    public void pay() {
        System.out.println("阿里支付=======》》》》》》》》》");
    }
}

public class WeChatService implements PayService {

    /**
     * 支付方法
     */
    @Override
    public void pay() {
        System.out.println("微信支付====》》》》》》》》》");
    }
}
public class XiaoMiService implements PayService {

    /**
     * 支付方法
     */
    @Override
    public void pay() {
        System.out.println("小米支付===========》》》》》》》》》");
    }
}

定义工厂方法:对象交由工厂管理

/**
 * 工厂方法封装
 */
public class PayFactory {

     public static PayService getPayService(String payType){
         PayService payService = null;
         switch (payType){
             case "ali_pay":
                 payService = new AliService();
              break;
              case "wechat_pay":
                 payService = new WeChatService();
               break;
              case "xiaomi_pay":
                 payService = new XiaoMiService();
                 break;
         }
         return payService;
     }
}



我们来测试下:

public class Demo1 {
    public static void main(String[] args) {
        PayService payService = PayFactory.getPayService("wechat_pay");
        payService.pay();
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值