1) 什么是简单工厂
简单工厂模式(Simple Factory Pattern)是一种创建型设计模式,其主要目的是通过将对象的创建逻辑封装在一个工厂类中,从而隐藏对象的创建细节并简化对象的创建过程。
在简单工厂模式中,客户端通过向工厂类传递不同的参数来请求工厂创建不同类型的对象。
2) 代码实现
public interface Car {
void carName();
}
public class Bench implements Car {
@Override
public void carName() {
System.out.println("奔驰");
}
}
public class Wuling implements Car {
@Override
public void carName() {
System.out.println("五菱");
}
}
/**
* 简单工厂模式
* @author spikeCong
* @date 2023/3/9
**/
public class CarFactory {
//type值: 0 奔驰,1 五菱
public static Car getCar(String type){
if(type.equals("0")){
return new Bench();
}else if(type.equals("1")){
return new Wuling();
}else{
return null;
}
}
}
public class Customer {
public static void main(String[] args) {
Car car = CarFactory.getCar("1");
car.carName();
}
}
3) 工厂模式的优缺点
简单工厂模式的优点
1. 隐藏对象的创建细节,使得客户端代码更加简洁易懂。
2. 通过使用工厂类,可以集中管理所有对象的创建逻辑,便于维护和升级。
3. 可以通过增加新的具体产品类,扩展系统的功能。
简单工厂模式的缺点
1. 系统扩展性受到限制,因为工厂类负责所有产品的创建,如果需要添加新的产品,就需要修改工厂类的代码。
2. 代码比较复杂,难以维护和测试 : 工厂类通常集中了大量的对象创建逻辑,导致工厂类的代码比较复杂,难以维护和测试。
3. 简单工厂模式违背了开闭原则,因为每次添加新的产品都需要修改工厂类的代码。
说一说工厂方法模式?
1) 什么是工厂方法模式
工厂方法模式(Factory Method Pattern)是一种创建型设计模式,它定义了一个用于创建对象的接口,但是具体创建哪个类的对象由子类决定。
在工厂方法模式中,我们将对象的创建委托给具体的工厂类,由工厂类来负责创建具体的产品对象。这样,客户端代码只需要关心所需对象的抽象类型,无需关心具体的实现细节,从而实现了解耦。
2) 代码实现
public interface CarFactory {
Car getCar();
}
public class JinBeiFactory implements CarFactory {
@Override
public Car getCar() {
return new JinBei();
}
}
public interface Car {
void carName();
}
public class JinBei implements Car {
@Override
public void carName() {
System.out.println("金杯");
}
}
public class Customer {
public static void main(String[] args) {
Car car = new JinBeiFactory().getCar();
car.carName();
}
}
3) 工厂方法模式的优缺点
工厂方法模式的优点
用户只需要知道具体工厂的名字,就可以获取到想要的产品,不需要关注产品的创建过程
在系统新增加产品的时候,只需要添加具体产品类和对应的具体工厂,不需要对原工厂进行修改,满足了开闭原则
工厂方法模式的缺点
每增加一个产品,就需要一个具体产品类和对应的具体工厂类,这样会增加系统的复杂度.