设计模式|抽象工厂设计模式

场景举例

工厂生产产品

一个工厂可以生产多种具有相同功能的产品

工厂生产的产品

1
2
3
public interface Button {
void click();
}
1
2
3
4
5
6
public class HTMLButton implements Button{
@Override
public void click() {
System.out.println("HTML Click");
}
}
1
2
3
4
5
6
public class WindowsButton implements Button{
@Override
public void click() {
System.out.println("Windows Click");
}
}

工厂创造者

1
2
3
4
5
6
7
8
9
public abstract class ABaseButtonFactory {

public void createAndAutoClickButton(){
Button button = createButton();
button.click();
}

protected abstract Button createButton();
}
1
2
3
4
5
6
7
public class HTMLButtonFactory extends ABaseButtonFactory {

@Override
public Button createButton() {
return new HTMLButton();
}
}
1
2
3
4
5
6
public class WindowsButtonFactory extends ABaseButtonFactory {
@Override
public Button createButton() {
return new WindowsButton();
}
}

测试演示

1
2
3
4
5
6
7
8
9
10
public class FactoryMethodPattern {
public static void main(String[] args) {

HTMLButtonFactory htmlButtonFactory = new HTMLButtonFactory();
htmlButtonFactory.createAndAutoClickButton();

WindowsButtonFactory windowsButtonFactory = new WindowsButtonFactory();
windowsButtonFactory.createAndAutoClickButton();
}
}

总结

工厂方法模式适用于需要创造一系列具有相同行为的产品,提供一个抽象的通用基类

创建者子类继承基类,通过实现父类的某个抽象方法,在客户端调用基类的公共方法(会重新调用子类重写的版本)来创造出不同的,但是具有相同行为的产品


设计模式|抽象工厂设计模式
http://example.com/2024/11/14/设计模式-抽象工厂设计模式/
作者
Noctis64
发布于
2024年11月14日
许可协议