介绍
抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
主要解决:接口选择的问题
使用场景:一个对象族有相同的约束时可以使用抽象工厂模式。
优点:
1.分离接口与实现
缺点:
1.类文件的爆炸性增加
2.不太容易扩展新的产品类
UML类图
AbstractFactory.jpg
代码实现
OS.java
public abstract class OS {
public abstract void method();
}
Windows.java
public class Windows extends OS{
@Override
public void method() {
System.out.println("This is Windows OS!");
}
}
MacOS.java
public class MacOS extends OS {
@Override
public void method() {
System.out.println("This is MacOS");
}
}
Screen.java
public abstract class Screen {
public abstract void method();
}
LTPS.java
public class LTPS extends Screen {
@Override
public void method() {
System.out.println("This is LTPS");
}
}
IPS.java
public class IPS extends Screen {
@Override
public void method() {
System.out.println("This is IPS");
}
}
ComputerFactory.java
public abstract class ComputerFactory {
public abstract OS createOS();
public abstract Screen createScreen();
}
MateBookFactory.java
public class MateBookFactory extends ComputerFactory {
@Override
public OS createOS() {
return new Windows();
}
@Override
public Screen createScreen() {
return new LTPS();
}
}
MacBookFactory.java
public class MacBookFactory extends ComputerFactory {
@Override
public OS createOS() {
return new MacOS();
}
@Override
public Screen createScreen() {
return new IPS();
}
}