简单工厂模式的主要角色如下:
-
简单工厂(SimpleFactory):是简单工厂模式的核心,负责实现创建所有实例的内部逻辑。工厂类的创建产品类的方法可以被外界直接调用,创建所需的产品对象。
-
抽象产品(Product):是简单工厂创建的所有对象的父类,负责描述所有实例共有的公共接口。
-
具体产品(ConcreteProduct):是简单工厂模式的创建目标。
抽象产品:
/**
* 家用电器接口 抽象产品
*
* */
public interface Appliance {
/**
* 描述电器的信息
* */
public void show();
}
简单工厂:
/**
* 电器工厂,简单工厂类
* */
public class AppliaceFactory {
/**
* 生产电器
* */
public static Appliance makeAppliance(String type){
switch (type){
case "电视机":
return new Tv();
case "电冰箱":
return new IceBox();
}
return null;
}
//使用反射来创建对象
public static Appliance makeAppliance1(String type){
try {
Class<?> aClass = Class.forName(type);
return (Appliance) aClass.getConstructor().newInstance();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
具体产品:
/**
* 具体产品
* */
public class Tv implements Appliance{
@Override
public void show() {
System.out.println("电视机");
}
}
/**
* 具体产品 :冰箱类
* */
public class IceBox implements Appliance{
@Override
public void show() {
System.out.println("冰箱");
}
}
测试类:
public class ApplianceTest {
public static void main(String[] args) {
//根据传递不同的电器类型创造不同的电器对象
// Appliance tv = AppliaceFactory.makeAppliance("电视机");
// tv.show();
// Appliance icebox = AppliaceFactory.makeAppliance("电冰箱");
// icebox.show();
Appliance icebox = AppliaceFactory.makeAppliance1("com.yt.lesson0803.simpcfactecy.IceBox");
icebox.show();
}
}