GOF23设计模式之简单工厂模式
作者:互联网
目录
工厂模式介绍
实现了创建者与调用者分离
详细分类:
- 简单工厂模式
- 工厂方法模式
- 抽象工厂模式
面向对象的设计原则
- OCP 开闭原则 :
一个软件的实体应该对扩展开放,对修改关闭 - DIP 依赖倒转原则:
要针对接口编程,不要针对实现编程 - Lod:
直接与你的朋友通信,避免与陌生人通信
核心本质
实例化对象,用工厂方法代替new操作
将选择实现类、创建对象统一管理和控制,从而将调用者跟我们的实现类解耦。
普通创建实现类
定义接口
public interface Car {
void run();
}
实现类
public class Byd implements Car {
@Override
public void run() {
System.out.println("比亚迪在跑");
}
}
实现类
public class Audi implements Car {
@Override
public void run() {
System.out.println("奥迪在跑");
}
}
没有工厂模式的情况下,创建实现类
/**
* 没有工厂模式得情况下
*/
public class Client1 {
public static void main(String[] args) {
Car c1 = new Audi();
Car c2 = new Byd();
c1.run();
c2.run();
}
}
可以看到,调用者需要知道接口,和所有用到的实现类
工厂模式创建类
简单工厂模式示例
public class CarFactory {
public static Car createCar(String type){
if ("奥迪".equals(type)){
return new Audi();
}else if ("比亚迪".equals(type)){
return new Byd();
}else {
return null;
}
}
}
public class CarFactory2 {
public static Car createAudi(){
return new Audi();
}
public static Car createByd(){
return new Byd();
}
}
简单工厂模式下,调用
/**
* 简单工厂得情况下
*/
public class Client2 {
public static void main(String[] args) {
Car c1 = CarFactory.createCar("奥迪");
Car c2 = CarFactory.createCar("比亚迪");
c1.run();
c2.run();
}
}
可以看到,现在调用者只需要与Car和CarFactory打交道,实现了解耦。
要点
简单工厂模式也叫静态工厂模式,就是工厂类一般是使用静态方法,通过接收的参数不同来返回不同的对象实例
对于新增产品无能为力,不修改代码无法扩展
yissan 博客专家 发布了57 篇原创文章 · 获赞 311 · 访问量 28万+ 私信 关注标签:run,GOF23,Car,模式,工厂,new,设计模式,public 来源: https://blog.csdn.net/yissan/article/details/104193492