Coin163

首页 > 《Android源码设计模式》读书笔记 (5) 第5章 工厂模式

《Android源码设计模式》读书笔记 (5) 第5章 工厂模式

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

原文

前言 定义 定义:定义一个用户创建对象的接口,让子类决定实例化哪个类 使用场景:需要生成复杂对象的地方,使用该模式,如果用new的对象,就无需使用.例如:activity生命周期,onCreate()等 缺点:每次

------分隔线----------------------------