-
定义
提供接口,创建一系列相关或独立的对象,而不指定这些对象的具体类。(可以理解为工厂模式的抽象) -
类图
Abstract Factory.png
-
例子
//Button
class Button {/* ...*/}
class WinButton extends Button {/* ...*/}
class MacButton extends Button{/* ...*/}
//Icon
class Icon {/* ...*/}
class WinIcon extends Icon{/* ...*/}
class MacIcon extends Icon{/* ...*/}
//抽象工厂
abstract class OSFactory{
abstract Button createButton();
abstract Icon createIcon();
}
//实现工厂Win
class WinFactory extends OSFactory{
@Override
Button createButton() {
return new WinButton();
}
@Override
Icon createIcon() {
return new WinIcon();
}
}
//实现工厂Mac
class MacFactory extends OSFactory{
@Override
Button createButton() {
return new MacButton();
}
@Override
Icon createIcon() {
return new MacIcon();
}
}
补充
- 当创建的种类(或者行为)超过一种时,原先的工厂方法就显得力不从心,或许还有些杂乱,这时候就应该抽象创造者的抽象了,这往往是面向对象的思维,如果一个类太长太乱,我们就可以尝试去抽象了(但是这并不绝对,解决的方案不止一种),通过多个类的实现来分离一个类中的代码,让程序变的更易维护。
发现一个总结的更全的网站
网友评论