作者持续关注 WPS二次开发专题系列,持续为大家带来更多有价值的WPS二次开发技术细节,如果能够帮助到您,请帮忙来个一键三连,更多问题请联系我(QQ:250325397)
目录
抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,属于对象创建型模式。
提供一个接口,用于创建 相关的产品家族 。
工厂方法模式包含如下角色:
抽象和具体产品
- /**
- * 抽象的按钮族
- */
- public abstract class Button {
-
- /**
- * 显示操作
- */
- abstract void onShow();
- }
-
- /**
- * 按钮族--圆形按钮
- */
- public class CircleButton extends Button {
- @Override
- void onShow() {
- System.out.println("button on show: CircleButton...");
- }
- }
-
- //-------------------------------------------------------
- /**
- * 抽象的形状族
- */
- public abstract class Shape {
- /**
- * 入场动画
- */
- abstract void animateIn();
- }
-
- /**
- * 形状族--直线
- */
- public class Line extends Shape {
- @Override
- void animateIn() {
- System.out.println("shape animate in: Line...");
- }
- }
抽象工厂和具体工厂
- /**
- * 抽象工厂
- */
- public abstract class AbstractFactory {
- /**
- * 创建按钮,可使用参数控制创建什么类型的按钮
- */
- abstract Button createButton();
-
- /**
- * 创建文本框,可使用参数控制创建什么类型的文本框
- */
- abstract TextField createTextField();
-
- /**
- * 创建形状,可使用参数控制创建什么类型的形状
- */
- abstract Shape createShape();
- }
-
- /**
- * 蓝色风格的工厂
- */
- public class BlueStyleFactory extends AbstractFactory {
- @Override
- Button createButton() {
- System.out.println("factory style: red button created...");
- Button button = new CircleButton();
- //设置蓝色主题
- System.out.println("factory style: setup blue style...");
- return button;
- }
-
- @Override
- TextField createTextField() {
- System.out.println("factory style: red text field created...");
- TextField textField = new FlatTextField();
- //设置蓝色主题
- System.out.println("factory style: setup blue style...");
- return textField;
- }
-
- @Override
- Shape createShape() {
- System.out.println("factory style: blue shape created...");
- Shape shape = new Line();
- //设置蓝色主题
- System.out.println("factory style: setup blue style...");
- return shape;
- }
- }
具体使用
- public class App {
- public static void main(String[] args) {
- //红色主题的控件
- AbstractFactory factory = new RedStyleFactory();
- Button button = factory.createButton();
- TextField textField = factory.createTextField();
- Shape shape = factory.createShape();
-
- //蓝色主题的控件
- factory = new BlueStyleFactory();
- button = factory.createButton();
- textField = factory.createTextField();
- shape = factory.createShape();
- }
- }
1、软件换界面主题,要求界面中的按钮、文本框、背景色等一起发生改变时,可以使用抽象工厂模式进行设计。
2、用于创建属于不同操作系统的视窗构件。如 Java 的 AWT 中的 Button 和 Text 等构件在 Windows 和 UNIX 中的本地实现是不同的。