前言
在学习抽象工厂模式之前,最好先学习了解简单工厂模式和工厂方法模式。这样会对学习抽象工厂模式有帮助,因为抽象工厂模式也是基于工厂方法模式的。
解释
说白了就是工厂的工厂,以一个超级工厂为核心,围绕这个超级工厂去创建其他工厂,最后工厂再去用它自己的生产线去生产鼠标、键盘…
特点
有多个抽象产品类,具体工厂类能创建多个具体产品类实例。
实现
1.抽象工厂
也唤作超级工厂,是工厂的工厂。具体的联想工厂、惠普工厂的创建,都是围绕这个超级工厂展开的
/**
* 抽象工厂
*/
public abstract class ComputerFactory {
//生产键盘
public abstract IKeyboard createKeyboard();
//生产屏幕
public abstract IScreen createScreen();
}
2.产品接口
为以下产品定义的接口
public interface IKeyboard {
//键盘
void keyboard();
}
public interface IScreen {
//屏幕
void screen();
}
3.根据产品接口定义不同对象
实现抽象接口,定义不同的对象。当然了,除了键盘除了雷蛇,还有HHKB、达尔优;屏幕除了三星,还有京东方…
public class RazerKeyboard implements IKeyboard {
@Override
public void keyboard() {
System.out.print("雷蛇机械键盘");
}
}
public class SamsungScreen implements IScreen {
@Override
public void screen() {
System.out.print("三星屏幕");
}
}
4.实现具体工厂类
除了美帝良心想,还有铁板熊掌普等其他工厂
/**
* 联想工厂
*/
public class LenovoFactory extends ComputerFactory {
@Override
public IKeyboard createKeyboard() {
return new RazerKeyboard();
}
@Override
public IScreen createScreen() {
return new SamsungScreen();
}
}
5.客户端调用
public class UserClient {
public static void main(String []args){
//美帝良心想工厂
LenovoFactory foxconnFactory = new LenovoFactory();
foxconnFactory.createKeyboard().keyboard();//代工雷蛇键盘生产
foxconnFactory.createScreen().screen();//代工三星屏幕生产
...
//这里如果我不喜欢拯救者,想换个暗影精灵,只需要创建hp工厂对象,由hp工厂去生产即可
}
}