抽象工厂模式
一、简介
定义:为创建一组相关或者相互依赖的对象提供一个接口,而无需指定它们的具体类。
二、使用场景
一个对象族有相同约束时可以使用抽象工厂模式。系统中有多于一个的产品线,而每次只使用其中某一产品线时同样可以使用抽象工厂模式。
三、抽象工厂模式的简单实现
//抽象工厂类
public abstract class ComputerFactory{
public abstract IOs createOs();
public abstract IDisplay createDisplay();
}
//os相关类
public interface IOs {
void os();
}
public class highVersion implements IOs{
@Override
public void os() {
Log.i(TAG, "os: Version 10.15.5");
}
}
public class lowVersion implements IOs{
@Override
public void os() {
Log.i(TAG, "os: Version 10.10.1");
}
}
//display相关类
public interface IDisplay {
void display();
}
public class normalDisplay implements IDisplay{
@Override
public void display() {
Log.i(TAG, "display: Display size 13.3");
}
}
public class proDisplay implements IDisplay{
@Override
public void display() {
Log.i(TAG, "display: Display size 15.4");
}
}
//具体工厂类
public class normalFactory extends ComputerFactory{
@Override
public IOs createOs() {
return new lowVersion();
}
@Override
public IDisplay createDisplay() {
return new normalDisplay();
}
}
//具体工厂类
public class proFactory extends ComputerFactory{
@Override
public IOs createOs() {
return new highVersion();
}
@Override
public IDisplay createDisplay() {
return new proDisplay();
}
}
//测试
public void Test(){
ComputerFactory normal=new normalFactory();
normal.createOs();
normal.createDisplay();
ComputerFactory pro=new proFactory();
pro.createOs();
pro.createDisplay();
}
上面只有两个具体的工厂类,如果需要增加工厂类那么对应的os和display也需要增加从而导致类的数量徒增这是抽象工厂模式的一个弊端