通过理论,代码示例,Android源码来学习工厂方法模式
介绍
工厂模式 ( Factory Pattern ) ,是创建型设计模式之一。工厂方法模式是一种结构简单的模式,其在我们平时开发中应用很广泛,也许你并不知道,但是你已经使用了无数次改模式了,如 Android 中的 Activity 里各个生命周期方法,以 onCreate 方法为例,它就可以看做是一个工厂方法,我们在其中可以构造我们的 View,并通过 setContentView 返回给 Framework 处理。
定义
定义一个用于创建对象的接口,让子类决定实例化哪个类。
使用场景
在任何需要生成复杂对象的地方,都可以使用工厂方法模式。复杂对象适合使用工厂模式,用 new 就可以完成创建的对象无需使用 Factory 。
工厂模式代码示例
需求:根据用户不同的权限,匹配不同的业务模块。
定义一个抽象的业务模块类
1 | public abstract class IModule { |
具体功能的实现类
1 | public class PlayMusicImpl implements IFunctionModule { |
1 | public class PlayVideoImpl implements IFunctionModule { |
1 | public class NewsImpl implements IFunctionModule { |
具体功能模块工厂开始生产需要的模块
1 | public class FunModuleFactor extends IModule { |
使用:
1 |
|
输出:
1 | VIP:3 |
根据上面代码可知,我们定义了一个抽象模块类 IMoudle,FunModuleFactory 实现了 IModule ,外部可以通过不同的权限来组装对应的业务功能。也就实现了这个需求。
总结
总的来说,工厂方法模式是一个很好的设计模式,但是也有缺点,每次我们为工厂方法模式添加一个新的模块都要编写新的模块类,同时引入抽象层,这必然会导致类结构的复杂化,所以,在某些情况比较简单时,是否使用工厂模式,需要自己权衡利弊了。