一个简单的实例工厂模式
模拟常见 人买车
作用:
实现创建者 和 调用者 (消费者) 分离
◆OOP七大原则
◆开闭原则:一个软件的实体应当对扩展开放,对修改关闭
◆依赖倒转原则:要针对接口编程,不要针对实现编程
◆迪米特法则:只与你直接的朋友通信,而避免和陌生人通信
本质
- 实例化对象 不在用new 而是用工厂方法来代替
- 中间 加一层工厂类 对创建者 统一的实现管理
原来的实现方式:
/**
* @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();
}
}
本文通过实例展示了如何使用工厂模式在购车场景中实现OOP七大原则,包括创建者与消费者分离、开闭原则、依赖倒置原则和迪米特法则。通过Car接口和BMW、AoDI类,以及CarFactory类管理对象创建,实现了灵活扩展和降低修改成本。

8596

被折叠的 条评论
为什么被折叠?



