抽象工厂模式的Android实例
介绍
抽象工厂模式是一种创建型设计模式,它提供了一种创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。在Android开发中,抽象工厂模式可以用于创建一系列相关的视图组件或数据处理对象。
步骤
下面是实现抽象工厂模式的步骤:
步骤 | 描述 |
---|---|
定义抽象工厂 | 创建一个抽象工厂接口,声明创建一系列相关对象的方法。 |
实现具体工厂 | 创建具体工厂类,实现抽象工厂接口。 |
定义抽象产品 | 创建一组抽象产品接口,声明具体产品类的公共方法。 |
实现具体产品 | 创建具体产品类,实现抽象产品接口。 |
使用抽象工厂 | 在应用中使用抽象工厂创建一系列相关对象,而不直接使用具体工厂和产品。 |
代码实现
1. 定义抽象工厂
public interface WidgetFactory {
Button createButton();
TextView createTextView();
}
2. 实现具体工厂
public class MaterialWidgetFactory implements WidgetFactory {
@Override
public Button createButton() {
return new MaterialButton();
}
@Override
public TextView createTextView() {
return new MaterialTextView();
}
}
public class ClassicWidgetFactory implements WidgetFactory {
@Override
public Button createButton() {
return new ClassicButton();
}
@Override
public TextView createTextView() {
return new ClassicTextView();
}
}
3. 定义抽象产品
public interface Button {
void render();
}
public interface TextView {
void render();
}
4. 实现具体产品
public class MaterialButton implements Button {
@Override
public void render() {
// 渲染Material风格的按钮
}
}
public class ClassicButton implements Button {
@Override
public void render() {
// 渲染Classic风格的按钮
}
}
public class MaterialTextView implements TextView {
@Override
public void render() {
// 渲染Material风格的文本视图
}
}
public class ClassicTextView implements TextView {
@Override
public void render() {
// 渲染Classic风格的文本视图
}
}
5. 使用抽象工厂
public class MainActivity extends AppCompatActivity {
private Button button;
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 使用Material风格的工厂创建按钮和文本视图
WidgetFactory materialFactory = new MaterialWidgetFactory();
button = materialFactory.createButton();
textView = materialFactory.createTextView();
// 使用Classic风格的工厂创建按钮和文本视图
WidgetFactory classicFactory = new ClassicWidgetFactory();
button = classicFactory.createButton();
textView = classicFactory.createTextView();
}
}
甘特图
gantt
dateFormat YYYY-MM-DD
title 抽象工厂模式实现流程
section 定义
定义抽象工厂 : 2021-01-01, 1d
定义抽象产品 : 2021-01-01, 1d
section 实现
实现具体工厂 : 2021-01-02, 2d
实现具体产品 : 2021-01-03, 2d
section 使用
使用抽象工厂 : 2021-01-05, 2d
类图
classDiagram
class WidgetFactory{
+createButton()
+createTextView()
}
class MaterialWidgetFactory{
+createButton()
+createTextView()
}
class ClassicWidgetFactory{
+createButton()
+createTextView()
}
interface Button{
+render()
}
interface TextView{
+render()
}
class MaterialButton{
+render()
}
class ClassicButton{
+render()
}
class MaterialTextView{
+render()
}
class ClassicTextView{
+render()
}
WidgetFactory <|-- MaterialWidgetFactory
Widget