Android设计模式之工厂方法模式

一、定义:

定义一个用于创建对象的接口,让子类决定实例化哪个类。

二、组成:

1.抽象工厂:工厂模式的核心,声明工厂方法,返回抽象产品对象。

2.具体工厂:实现工厂方法,返还具体的产品对象。

3.抽象产品:定义产品的相关接口。

4.具体产品:实现抽象产品的具体类。

三、具体例子:

抽象产品

public abstract class Product {

public abstract void method();

}

具体产品A

public class ConcreteProductA extends Product {

@Override

public void method(){

System.out.printn("I'm product A");

}

}

具体产品B

public class ConcreteProductB extends Product {

@Override

public void method(){

System.out.printn("I'm product B");

}

}

抽象工厂

public abstract class Factory{

public abstract <T extends Product> createProduct(Class<T> clz);

}

具体工厂

public class ConcreteFactory extends Factory{

@Override

public <T extends Procut> createProduct(Class<T> clz){

Product p = null;

try{

p = (Product) Class.forName(clz.getName()).newInstance();

} catch (Exception e){

e.printStackTrace();

}

}

}

客户端使用

public class Client{

public static void main(String[] args){

Factory factory = new ConcreteFactory();

Product p = factory.createProduct(ConcreteProductB.class);

p.method();

}

}

四、应用场景:

1.创建复杂对象:BitmapFactory

2.动态加载布局:LayoutInflater的inflate()

3.Fragment实例化:重写onCreateView方法创建具体的view

4.MVP/MVVM架构中的对象创建:使用工厂方法创建Presenter或viewModel,避免直接new 对象

五、优缺点:

优点

解耦:将对象创建逻辑与业务代码分离

扩展性:新增产品类型只需要增加新工厂类,符合开闭原则

统一管理:集中控制对象的创建过程

缺点

类数量增加:每增加一个产品,需要新增对于的工厂类

复杂度提升:对简单对象创建显得冗余

相关推荐
恋猫de小郭2 分钟前
Flutter 官方 LLM 动态 UI 库 flutter_genui 发布,让 App UI 自己生成 UI
android·前端·flutter
锅拌饭26 分钟前
saveEnabled导致的Fragment大量泄露
android
叽哥34 分钟前
Kotlin学习第 3 课:Kotlin 流程控制:掌握逻辑分支与循环的艺术
android·java·kotlin
CYRUS_STUDIO37 分钟前
别让 so 裸奔!移植 OLLVM 到 NDK 并集成到 Android Studio
android·android studio·llvm
尚久龙41 分钟前
安卓学习 之 图片控件和图片按钮
android·java·学习·手机·android studio·安卓
东风西巷1 小时前
Don‘t Sleep:保持电脑唤醒,确保任务不间断
android·电脑·软件需求
tangweiguo030519871 小时前
FlutterActivity vs FlutterFragmentActivity:全面对比与最佳实践
android·flutter
葱段1 小时前
【Flutter】TextField 监听长按菜单粘贴点击事件
android·flutter·dart
用户091 小时前
Gradle 现代化任务依赖方案
android·kotlin
将编程培养成爱好2 小时前
C++ 设计模式《外卖菜单展示》
c++·设计模式