目录
工厂模式
使用工厂模式的优点
理解:比如代码中创建了很多个对象,如果没有使用工厂模式,当创建对象的方式发生改变,比如 new Student()变为new Student(18,"男"),就需要将程序中所有创建对象的代码一个个更改,但如果使用工厂模式,只需要在工厂中修改创建对象的方式即可。
Java中的工厂模式示例
Drink.java
package com.example.factory;
public interface Drink {
void prepare();
}
Coffee.java
package com.example.factory;
public class Coffee implements Drink {
@Override
public void prepare() {
System.out.println("Preparing Coffee...");
}
}
Tea.java
package com.example.factory;
public class Tea implements Drink {
@Override
public void prepare() {
System.out.println("Preparing Tea...");
}
}
DrinkFactory.java
package com.example.factory;
public class DrinkFactory {
public static Drink createDrink(String type) {
if (type.equalsIgnoreCase("coffee")) {
return new Coffee();
} else if (type.equalsIgnoreCase("tea")) {
return new Tea();
}
return null;
}
}
Main.java
package com.example.factory;
public class Main {
public static void main(String[] args) {
Drink coffee = DrinkFactory.createDrink("coffee");
coffee.prepare();
Drink tea = DrinkFactory.createDrink("tea");
tea.prepare();
}
}
- 接口
Drink
:定义了prepare()
方法,这是所有饮料的通用行为。 - 具体实现类
Coffee
和Tea
:实现了Drink
接口,定义了各自的prepare()
方法。 - 工厂类
DrinkFactory
:通过createDrink
方法,根据输入类型创建对应的饮料对象,而不是直接实例化具体类。这种方式隐藏了对象创建的细节。 - 客户端代码:使用
DrinkFactory
来获取具体的对象,而无需知道对象的创建逻辑。