简单工厂模式
什么是工厂模式
实现了创建者和调用者分离,工厂模式分为简单工厂、工厂方法、抽象工厂模式
工厂模式好处
工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。
利用工厂模式可以降低程序的耦合性,为后期的维护修改提供了很大的便利。
将选择实现类、创建对象统一管理和控制。从而将调用者跟我们的实现类解耦。
工厂模式分类
简单工厂模式
简单工厂模式相当于是一个工厂中有各种产品,创建在一个类中,客户无需知道具体产品的名称,只需要知道产品类所对应的参数即可。但是工厂的职责过重,而且当类型过多时不利于系统的扩展维护。
大家注意 工厂和容器的概念, 容器存放,工厂创建。
请看目录结构:
Car接口定义:
package FactoryModel;
//汽车厂
public interface Car {
void run();
}
实现类,各种车型:
package FactoryModel;
public class BydCar implements Car {
@Override
public void run() {
System.out.println("比亚迪run");
}
}
package FactoryModel;
public class JiLiCar implements Car {
@Override
public void run() {
System.out.println("吉利run");
}
}
定义工厂:
package FactoryModel;
//汽车厂
public class CarFactory {
public static Car createCar(String name){
if (name.equals("比亚迪")) {
return new BydCar();
}
if (name.equals("吉利")) {
return new JiLiCar();
}
//其他类型的
return null;
}
}
定义客户端:
package FactoryModel;
public class Client {
public static void main(String[] args) {
Car byd = CarFactory.createCar("比亚迪"); //类比线程池的创建哦
byd.run();
}
}
运行结果:
简单工厂模式:里面的场景多 传递参数 返回具体产品 但是类型很多时候就影响扩展性了 很麻烦了
单工厂的优点/缺点
优点:简单工厂模式能够根据外界给定的信息,决定究竟应该创建哪个具体类的对象。明确区分了各自的职责和权力,有利于整个软件体系结构的优化。
缺点:很明显工厂类集中了所有实例的创建逻辑,容易违反GRASPR的高内聚的责任分配原则
简单工厂模式 又叫 静态工厂方法模式 它定义一个具体的工厂类负责创建一些类的实例
优点 客户端不需要负责对象的创建 从而明确了个各类的职责
缺点 这个静态工厂类负责所有对象的创建,如果有新的对象增加,或者某些对象的创建方式不同,就需要不断的修改工厂类,不利于后期的维护