GOF23设计模式之简单工厂模式
Posted 程序员yqy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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打交道,实现了解耦。
要点
简单工厂模式也叫静态工厂模式,就是工厂类一般是使用静态方法,通过接收的参数不同来返回不同的对象实例
对于新增产品无能为力,不修改代码无法扩展
以上是关于GOF23设计模式之简单工厂模式的主要内容,如果未能解决你的问题,请参考以下文章