设计模式-工厂模式

本文通过实例展示了如何使用工厂模式在购车场景中实现OOP七大原则,包括创建者与消费者分离、开闭原则、依赖倒置原则和迪米特法则。通过Car接口和BMW、AoDI类,以及CarFactory类管理对象创建,实现了灵活扩展和降低修改成本。

一个简单的实例工厂模式
模拟常见 人买车

作用:
实现创建者 和 调用者 (消费者) 分离
◆OOP七大原则
◆开闭原则:一个软件的实体应当对扩展开放,对修改关闭
◆依赖倒转原则:要针对接口编程,不要针对实现编程
◆迪米特法则:只与你直接的朋友通信,而避免和陌生人通信

本质

  1. 实例化对象 不在用new 而是用工厂方法来代替
  2. 中间 加一层工厂类 对创建者 统一的实现管理

原来的实现方式:

/**
 * @author mcc
 * @title: Car
 * @date 2022/4/1021:32
 * 工厂模式:简单工厂模式
 */
public interface Car {
    //里面有个造车的方法
    void create();
}
/**
 * @author mcc
 * @title: BMW
 * @date 2022/4/1021:36
 * 宝马车
 */
public class BMW implements Car{

    @Override
    public void create() {
        System.out.println("宝马正在创建");
    }
}
/**
 * @author mcc
 * @title: AoDI
 * @date 2022/4/1021:33
 *  奥迪车ar
 */
public class AoDI  implements Car{
    //里面有个造车的一个方法
    public void create(){
        System.out.println("奥迪车已经造好");
    }
}
/**
 * @author mcc
 * @title: Main
 * @date 2022/4/1021:41
 * 消费者调用
 */
public class Main {

    /**
     * 买车 !
     */
/*    public static void main(String[] args) {
        //想买宝马买宝马
        BMW bmw = new BMW();
        bmw.create();
        //想买奥迪 买奥迪
        AoDI aoDI = new AoDI();
        aoDI.create();
    }*/

    /**
     * 工厂模式买车 !
     */
    public static void main(String[] args) {

        //消费者 直接去工厂 我要买宝马
        CarFactory carFactory = new CarFactory();
        Car car = carFactory.getCar("BMW");
        car.create();


    }

}

工厂模式的实现
创建车工厂

/**
 * @author mcc
 * @title: CarFactory
 * @date 2022/4/1021:46、
 *
 * 车工厂
 */
public class CarFactory {
    // 传过来什么车 给你造什么车
    public Car getCar(String name){
        if(name.equalsIgnoreCase("BMW")){
            return new BMW();
        } else if(name.equalsIgnoreCase("AoDI")){
            return new AoDI();
        } else{
            return null;
        }
    }
}

然后 消费者想买什么车 交给车工厂

/**
 * @author mcc
 * @title: Main
 * @date 2022/4/1021:41
 * 消费者调用
 */
public class Main {

    /**
     * 买车 !
     */
/*    public static void main(String[] args) {
        //想买宝马买宝马
        BMW bmw = new BMW();
        bmw.create();
        //想买奥迪 买奥迪
        AoDI aoDI = new AoDI();
        aoDI.create();
    }*/

    /**
     * 工厂模式买车 !
     */
    public static void main(String[] args) {

        //消费者 直接去工厂 我要买宝马
        CarFactory carFactory = new CarFactory();
        Car car = carFactory.getCar("BMW");
        car.create();


    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值