设计模式—创建型工厂模式之简单工厂JAVA实现

简单的讲述简单工厂模式:简单工厂是静态方法,可通过类名直接调用,而且只需要传入简单的参数即可。

核心组成:
* 1.Factory:工厂类,简单工厂模式,它负责实现创建所有实例的内部逻辑
* 2.IProduct: 抽象产品类,简单工厂模式所创建的所有对象的父类
* 描述所有实例所公共的接口
* 3.Product: 具体产品类,是简单工厂的创建目标
实现步骤:
* 创建抽象产品类:里面有抽象方法,由具体的产品类去实现
* 创建具体产品类: 继承了他们的父类,并实现具体的方法
* 创建工厂类: 提供一个静态方法createXX用来生产产品,只需要传入你想要产品名称

简单工厂模式的优点:将对象的创建和对象本身业务处理分离可以降低系统的耦合度。

缺点:工厂类的职责相对过重,增加新的产品需要修改工厂类的判断逻辑,违反了开闭原则 。

下面我用一个微信支付,支付宝支付的例子来进行简单工厂模式的实现。

抽象产品类,所有实例共有的公共接口:

/**
 * Created with IntelliJ IDEA.
 *
 * @Author: chenxiky
 * @Date: 2022/03/20/14:09
 * @Description: 抽象产品类,所有实例共有的公共接口
 */
public interface Pay {

    /**
     * 统一下单
     */
    void unifiedorder();
}

 微信支付的业务逻辑类:

/**
 * Created with IntelliJ IDEA.
 *
 * @Author: chenxiky
 * @Date: 2022/03/20/14:10
 * @Description: 微信支付实现类
 */
public class WechatPay implements Pay{
    @Override
    public void unifiedorder() {
        //TODO 微信支付的业务逻辑
        System.out.println("微信支付,统一下单");
    }
}
 支付宝支付的业务逻辑类:
/**
 * Created with IntelliJ IDEA.
 *
 * @Author: chenxiky
 * @Date: 2022/03/20/14:08
 * @Description: 支付宝支付产品类
 */
public class AliPay implements Pay {
    @Override
    public void unifiedorder() {
        //TODO 支付宝支付的业务逻辑
        System.out.println("支付宝支付,统一下单。");
    }
}

  简单工厂类:

public class SimpleFactory {

    /**
     * 根据参数返回相应的支付对象
     * @param payType
     * @return
     */
    public static Pay createPay(String payType){

        // 空值判断 返回空或者自己抛出异常
        if(payType == null){
            return null;
        }
        if (payType.equalsIgnoreCase("WECHAT_PAY")){
            return new WechatPay();
        } else if (payType.equalsIgnoreCase("ALI_PAY")){
            return new AliPay();
        }
        // 想扩展更多的支付方式就继续编写更多的支付实现类并修改工厂
        return null;
    }
}

简单工厂的测试类: 

/**
 * Created with IntelliJ IDEA.
 *
 * @Author: chenxiky
 * @Date: 2022/03/20/14:19
 * @Description: 简单工厂类
 */
public class SimpleFactoryMain {
    public static void main(String[] args) {
        // 静态方法不需要new 写法一
        SimpleFactory.createPay("WECHAT_PAY").unifiedorder();
        // 静态方法不需要new 写法二
        Pay ali_pay = SimpleFactory.createPay("ALI_PAY");
        ali_pay.unifiedorder();
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
抽象工厂模式创建设计模式之一,它提供了一种创建对象的最佳方式。 在抽象工厂模式中,接口用于创建相关或依赖对象的工厂,而不是直接实例化对象。这样,系统可以具有更好的扩展性,因为在系统中加入新的产品时无需修改已有的代码。 例如,我们可以使用抽象工厂模式创建不同类的汽车,如油车和电动车。我们可以使用抽象工厂来创建不同品牌的汽车,如奥迪和宝马。 这是使用java实现抽象工厂模式的一个示例: ``` // 抽象工厂接口 public interface AbstractFactory { public Car createCar(); public Battery createBattery(); } // 具体工厂1 public class ConcreteFactory1 implements AbstractFactory { public Car createCar() { return new GasolineCar(); } public Battery createBattery() { return new LeadAcidBattery(); } } // 具体工厂2 public class ConcreteFactory2 implements AbstractFactory { public Car createCar() { return new ElectricCar(); } public Battery createBattery() { return new LithiumIonBattery(); } } // 汽车抽象类 public abstract class Car { public abstract void drive(); } // 油车类 public class GasolineCar extends Car { public void drive() { System.out.println("Driving a gasoline car!"); } } // 电动车类 public class ElectricCar extends Car { public void drive() { System.out.println("Driving an electric car!"); } } // 电池抽象类 public abstract class Battery { public abstract void charge(); } // 铅

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值