2021腾讯云限时秒杀,爆款1核2G云服务器298元/3年!(领取2860元代金券),
地址:https://cloud.tencent.com/act/cps/redirect?redirect=1062
2021阿里云最低价产品入口+领取代金券(老用户3折起),
入口地址:https://www.aliyun.com/minisite/goods
相关推荐:《Android源码设计模式》读书笔记 (11) 第11章 命令模式
前言 命令模式也是一种行为型的设计模式 定义 定义:将一系列的方法调用封装,用户只需调用一个方法执行,那么所有这些被封装的方法就会挨个执行调用. 优点:更弱的耦合性,更灵活的控制性,以及更好的扩展性. 缺点:类的膨胀,大量衍生类的创建 UML类图 commond:命令
前言
定义
- 定义:定义一个用户创建对象的接口,让子类决定实例化哪个类
- 使用场景:需要生成复杂对象的地方,使用该模式,如果用new的对象,就无需使用.例如:activity生命周期,onCreate()等
- 缺点:每次为工厂方法模式添加新的产品时,就要编写一个新的产品类,同时还要引入抽象层,势必会导致类结构复杂化.
UML类图
相关推荐:《Android源码设计模式》读书笔记 (9) 第9章 责任链模式
前言 该模式是行为设计模式之一.如果说android中该模式应用最具代表性的例子的话就是android的触摸机制.大家此时可以想想android的点击事件传递和拦截机制那幅图,就能更好的理解这个模式啦.如果想不起来也没关系,这里贴出来这个图.(以前自己画的,有点丑,大家
- 根据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