思想:
创建相应的工厂,生产相应的实例
实现:
抽象工厂 —— 父类(描述工厂生产)
具体工厂 —— 子类(生产功能实例)
抽象功能 —— 父类(描述功能)
具体功能 —— 子类(实现功能)
public interface 抽象工厂{
public 抽象功能 生产实例();
}
public class 具体工厂1 implements 抽象工厂{
public 抽象功能 生产实例(){
return new 具体功能1();
}
}
public class 具体工厂2 implements 抽象工厂{
public 抽象功能 生产实例(){
return new 具体功能2();
}
}
public interface 抽象功能{
public void 说();
}
public class 具体功能1 implements 抽象功能{
public void 说(){
System.out.println("我是具体功能1");
}
}
public class 具体功能2 implements 抽象功能{
public void 说(){
System.out.println("我是具体功能2");
}
}
public static void main(String[] args){
抽象工厂 工厂1 = new 具体工厂1();
抽象功能 功能1 = 工厂1.生产实例();
功能1.说();
抽象工厂 工厂2 = new 具体工厂2();
抽象功能 功能2 = 工厂2.生产实例();
功能2.说();
}
优点:
灵活,还可以通过反射机制实现
缺点:
每次写都要写工厂和具体方法,麻烦了点