《Android源码设计模式》读书笔记 (5) 第5章 工厂模式
2016-02-14 00:11
573 查看
前言
定义
定义:定义一个用户创建对象的接口,让子类决定实例化哪个类使用场景:需要生成复杂对象的地方,使用该模式,如果用new的对象,就无需使用.例如:activity生命周期,onCreate()等
缺点:每次为工厂方法模式添加新的产品时,就要编写一个新的产品类,同时还要引入抽象层,势必会导致类结构复杂化.
UML类图
根据UML类图,可以把工厂模式分为4大模块:
抽象工厂:抽象父类,提供返回具体产品子类的抽象方法,并由子类具体工厂来实现.
具体工厂:继承抽象工厂,来实现具体业务逻辑,返回具体产品子类
抽象产品:具体产品的父类,亦是提供抽象方法由子类继承来实现.
具体产品:实现抽象产品的某个具体产品对象.
实现步骤
根据书上提供的案例,我们可以通过5步来实现工厂模式构建具体产品子类对象.这是demo目录截图
1.抽象产品的父类
//抽象产品的父类,所有子类继承与它,提供父类的抽象方法生成不同的子类对象 public abstract class AudiCar { public abstract void drive(); public abstract void selfNavigation(); }
2.具体子类A
public class CarA extends AudiCar { @Override public void drive() { Log.e(MainActivity.TAQ, "这是一辆Q3"); } @Override public void selfNavigation() { Log.e(MainActivity.TAQ, "Q3自动巡航启动"); } }
3.抽象工厂类,返回各种继承AudiCar的各种子类对象
public abstract class AudiFactory { //这里可以学习一下这种类型的代码写法 public abstract <T extends AudiCar> T createAudiCar(Class<T> clz); }
4.简单工厂模式,继承抽象父类,根据不同产品类型class生创建对象
public <T extends AudiCar> T createAudiCar(Class<T> clz) { AudiCar car = null; try { car = (AudiCar) Class.forName(clz.getName()).newInstance(); } catch (Exception e) { e.printStackTrace(); } return (T) car; }
5.使用工厂子类来创建不同的产品子类
/* * 工厂模式创建产品子类A,B */ private void createProduct() { AudiFactory factory = new AudiCarFactory(); CarA a = factory.createAudiCar(CarA.class); CarB b = factory.createAudiCar(CarB.class); }
源码下载
点击下载Android简单工厂模式源码demo,http://download.csdn.net/detail/qq_28690547/9430899相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories