工厂设计模式在Android开发中的应用

从零开始学Android架构(一)——什么是设计模式? 前言 不少人会觉得架构师是一个高大上的岗位,只有技术顶尖的人才能胜任,但其实它并没有这么高大上,大部分的架构师,都只是开发经验非常丰富,并且热爱学习,善于知识迁移和总结。应用的架构是一件非常成熟,有非常多的经验提供我们借鉴的事情,我们可以从Android的架构中学习大型项目的架构思路,我们也可以从Android的局部中学习框架的精髓,如binder的设计,framework的设计,我们也可以深入到Android的代码细节中去看看具体的实现,看看什么样的场景使用什么的设计模式,如何写出更优雅的代码。除了And 阅读详情
1. 模式定义

定义一个创建对象的接口,让子类决定实例化哪个类,而对象的创建统一交由工厂去生成,有良好的封装性,既做到了解耦也保证了最少知识原则。工厂就是用来生成对象的,把对象的实例化和初始化封装起来。
下面以数据存储为例介绍工厂设计模式的用法。

2. 简单工厂模式

定义数据操作接口(产品接口)

public interface IOHandler {
    /*************save data start***************/
    void save(String key,String value);
    void save(String key,double value);
    void save(String key,int value);
    void save(String key,long value);
    void save(String key,boolean value);
    void save(String key,Object value);
    /*************save data end***************/

    /*************get data start***************/
    String getString(String key);
    double getDouble(String key,double defaultValue);
    int getInt(String key,int defaultValue);
    long getLong(String key,long defaultValue);
    boolean getBoolean(String key,boolean defaultValue);
    Object getObject(String key);
    /*************get data end***************/
}

具体数据操作的方式(产品)

public class PreferencesIOHandler implements IOHandler{
    ...
}

public class MemoryIOHandler implements IOHandler{
    ...
}

public class DiskIOHandler implements IOHandler{
    ...
}

工厂类生成数据的具体操作方式类(工厂来组装产品)

public class IOHandlerFactory {
    public enum IOType{
        MEMORY,PREFERENCES,DISK
    }
   
    public static IOHandler createIOHandler(IOType ioType){
        switch (ioType){
            case MEMORY:
                return new MemoryIOHandler();
            case PREFERENCES:
                return new PreferencesIOHandler();
            case DISK:
                return new DiskIOHandler();
            default:
                return null;
        }
    }
}

思考:比如我新增一个新的方式存储,要怎么改?需要新增类型,需要添加 case。这需要改动原来的很多代码

3. 工厂方法模式

一个具体操作的实现对应一个工厂的方法来生成

工厂方法

public interface IOFactory {
     IOHandler createIOHandler();
}

每种操作实现的方式都用一个工厂来生成,一个 IOFactory -> 一个 IOHandler(一个工厂一般生产相对应的产品,)

public class PreferencesIOFactory implements IOFactory{
    @Override
    public IOHandler createIOHandler() {
        return new PreferencesIOHandler();
    }
}

public class MemoryIOFactory implements IOFactory{
    @Override
    public IOHandler createIOHandler() {
        return new MemoryIOHandler();
    }
}

public class DiskIOFactory implements IOFactory{
    @Override
    public IOHandler createIOHandler() {
        return new DiskIOHandler();
    }
}

思考:随着功能的扩展,我们的 IOFactory 类会不断的增加,而且逻辑基本一样,在一定程度代码冗余度高

4. 抽象工厂模式

通过特定的方法返回单一的对象,可利用泛型

public class IOHandlerFactory {
    /**
     * 利用泛型生成产品
     */
    public static IOHandler createIOHandler(Class<? extends IOHandler> ioHandlerClass){
        try {
            return ioHandlerClass.newInstance();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return new PreferencesIOHandler();
    }

    /**
     * 获取 运行内存 存储
     * @return
     */
    public static IOHandler getMemoryIOHandler(){
        return createIOHandler(MemoryIOHandler.class);
    }

    /**
     * 获取 磁盘 存储
     * @return
     */
    public static IOHandler getDiskIOHandler(){
        return createIOHandler(DiskIOHandler.class);
    }

    /**
     * 获取 SP 存储
     * @return
     */
    public static IOHandler getPreferencesIOHandler(){
        return createIOHandler(PreferencesIOHandler.class);
    }

    /**
     * 获取 默认 存储
     * @return
     */
    public static IOHandler getDefaultIOHandler(){
        return getPreferencesIOHandler();
    }
}

工厂模式实例 简单工厂模式、工厂模式、抽象工厂模式 立即下载

相关推荐

最新高清完整版 Android源码设计模式解析与实战

最新高清完整版 Android源码设计模式解析与实战

【Android常见开发模式】

Model(模型):负责数据和业务逻辑的处理。View(视图):负责显示数据(用户界面)和接收用户操作。Controller(控制器):充当模型和视图之间的中介,控制用户输入并调用模型和视图进行更新。Model:同MVC,负责数据处理和业务逻辑。View:定义界面元素以及它们之间的交互,但不包含业务逻辑。Presenter:充当View和Model之间的桥梁,处理业务逻辑并更新View。安卓主推Model:负责数据管理和业务逻辑。View:定义用户界面,不包含业务逻辑。

许多仙的博客 1465

Android 架构模式

这里的响应式开发强调一种基于观察者模式的开发方式:View订阅ViewModel暴露的响应式接口,接收到通知后进行相应逻辑,而ViewModel不再持有任何形式的View的引用,减少耦合,提高了可复用性。ViewModel:解决了MVP的问题,使ViewModel和View之间不再依赖接口通信,而是通过LiveData、RxJava、Flow等响应式开发的方式来通信,即将数据以可观察对象的形式提供给View,View和ViewModel层分离,ViewModel不应该知道与之交互的View是什么。

zenmela2011的专栏 2087

从ESP/ABS选型看轮速传感器:为什么你的车用了AK+PWM+7/14mA三种协议?

本文深入解析了汽车轮速传感器的三种主流协议(7/14mA电流型、PWM型和AK协议型)及其混合应用场景。通过对比不同协议的技术特点、成本效益和工程挑战,揭示了现代车辆采用多种传感器协议背后的设计逻辑,包括成本控制、性能平衡和冗余设计等关键因素。

weixin_29266679的博客 531

【原创工具 | OpenCV-CamCalib】一个基于 OpenCV 的自动化相机数据采集和标定程序

一个基于OpenCV的自动化相机数据采集和标定程序。系统内置相机地址默认为 0。

XavierJ的博客 2697

Android开发框架模式(MVC、MVP、MVVM)实例解析

Android项目中,尤其是比较大型的项目开发中,模块内部的高聚合和模块间的低耦合性就显得尤为重要了。所以我们一般情况下需要为项目设计一种框架模式,通常情况下我们一般用到的三种MVC、MVP、MVVM。 通过框架模式设计的项目能够极大的提高开发效率,提高项目的可维护性和可扩展性,另外在模块测试及问题定位上也提供了较大的便利。 接下来我们就对这三种框架模式一一进行讲解,并会重点讲解下比较常用的MV......

红日 1万+

安卓逆向 | 某社交类APP gsid

*本文章仅供学习交流,切勿用于非法通途,如有侵犯贵司请及时联系删除

爬虫进击之路 3083

Android开发中常用设计模式

​:InputStream增强(BufferedInputStream)、View功能扩展。​:Android事件分发(ViewGroup→View)、拦截器链(OkHttp)。​:RecyclerView.Adapter(数据→视图)、第三方库适配。​:为其他对象提供代理以控制访问(如延迟加载、权限校验)。​:Glide图片加载(隐藏复杂初始化)、AOP编程。​:创建复杂对象(如网络请求库)、UI组件生成。​:播放器状态(播放/暂停)、订单状态流转。​:资源管理器(数据库、网络)、配置类。

JMY_2016的博客 1591

SAP_MM模块库存概览俄罗斯报表简介

本文介绍了SAP MM模块中"库存概览俄罗斯报表"的功能与应用。该报表主要用于查看物料在不同库存地点和类型的库存情况,并满足俄罗斯当地法规要求。文章解释了"俄罗斯报表"可能指代本地化合规库存报表或客户自定义报表,详细说明了事务代码J3RFLVMOBVEDH的操作步骤,包括公司代码、物料编码、日期范围等查询条件,并解释了报表中各字段含义如期初期末库存数量与价值。最后强调在物料分类账处理完成后使用该报表可获得实际库存价值,为SAP用户提供了实用的库存管理参考。

我小时候很黑的博客 1086

Android RIL(Radio Interface Layer)全面概述和知识要点(3万字长文)

在 Android 系统这个庞大而复杂的体系里,RIL(Radio Interface Layer,无线接口层)绝对是个关键角色。简单来讲,它就像一座桥梁,一头连着手机基带,另一头接着上层应用 ,在应用程序和调制解调器(Modem)之间搭建起了信息交流的通道。想象一下,咱们在手机上点击拨号按钮,或者编辑一条短信发送出去,这些操作产生的请求并不会直接到达手机的基带处理器。而是先由 RIL 接手,它把这些来自上层应用程序的请求,像拨号、发送短信这类,巧妙地转换成能够和基带处理器顺畅交互的命令。

大模型大数据攻城狮的专栏 1597

每个 Android 开发者都必须知道的 5 种设计模式

由于内容较多就只放上一个大概的大纲,需要更及详细的学习思维导图的扫码免费获取。还有免费的高级UI、性能优化、架构师课程、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter全方面的Android进阶实践技术资料,并且还有技术大牛一起讨论交流解决问题。...

Android_XG的博客 984

(王道计算机组成原理笔记)第一章计算机系统概述-第二节:计算机系统层次结构 1(计算机系统组成、计算机硬件)

文章目录一:冯诺依曼体系结构(1)存储程序计算机(2)层次结构二:计算机硬件概述(1)存储器A:存储元、存储单元、存储体、存储字和存储字长B:MAR 一:冯诺依曼体系结构 在冯诺依曼体系结构中,计算机的硬件主要有**存储器,运算器,控制器,输入和输出设备(也叫做I/O设备)**组成。 (1)存储程序计算机 冯诺依曼体系结构也叫做存储程序计算机,计算器和计算机的唯一区别就是计算器是不能编程的,只能做电路板中设定好的固定的运算。 这也就意味着计算器本质就是一个不能编程的计算机,其在硬件层面已经将逻辑写死,如果

快乐江湖的博客 1万+

解释如单例、工厂、观察者等常见设计模式在Android开发中的应用

在Android开发中,设计模式扮演着至关重要的角色,它们帮助开发者构建高效、可维护且易于扩展的应用程序。接下来,我将从技术难点、面试官关注点、回答吸引力和代码举例四个方面,详细解释单例模式、工厂模式和观察者模式这三种常见设计模式在Android开发中的应用。

453

微信小程序 - 详细实现打开跳转第三方 H5 网页链接,在微信小程序内直接跳转打开第三方网站链接详细教程(支持跳转公众号文章等,直接复制代码即可)

小程序跳转h5,小程序-Taro小程序中打开h5页面链接,...小程序跳转h5链接(web-view)_微信小程序,小程序如何跳转h5页面,小程序跳转到第三方H5网页,微信小程序跳转第三方H5的方法,小程序-实现怎么跳转打开H5网页链接(或跳转至公众号文章,打开第三方网站,放校验文件,怎么配置业务域名,校验文件验证域名,把校验文件放到对面网站,别人的服务器也打不开没权限怎么放呢,勾选不校验合法域名,txt,打不开别人的网页怎么办,真机调试打不开,无法跳转,有什么其他办法不放校验文件吗,后台配置,怎么

🏆 前端领域优质创作者 3万+

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

解释如单例、工厂、观察者等常见设计模式在Android开发中的应用。

在Android开发中,设计模式的应用是提升代码质量、增强可维护性和可扩展性的重要手段。单例模式(Singleton)、工厂模式(Factory)、观察者模式(Observer)等是其中最为常见且实用的设计模式。下面我将从技术难点、面试官关注点、回答吸引力以及代码举例四个方面来详细解释这些设计模式在Android开发中的应用。

526

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

漫谈设计模式之:简单工厂、工厂方法、抽象工厂

看到这篇文章的人不知道有多少是和我一样的Android程序员。35岁,这是我们这个行业普遍的失业高发阶段,这种情况下如果还不提升自己的技能,进阶发展,我想,很可能就是本行业的职业生涯的终点了。我们要有危机意识,切莫等到一切都成定局时才开始追悔莫及。只要有规划的,有系统地学习,进阶提升自己并不难,给自己多充一点电,你才能走的更远。千里之行始于足下。这是上小学时,那种一元钱一个的日记本上每一页下面都印刷有的一句话,当时只觉得这句话很短,后来渐渐长大才慢慢明白这句话的真正的含义。

2401_83641443的博客 602

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

设计模式-工厂方法模式

android中用到了太多的工厂类,其中有用工厂方法模式的,当然也有很多工厂并不是使用工厂方法模式的,只是工具管理类。今天以ThreadFactory举例说明一下简单工厂模式和工厂方法模式。工厂方法模式,Factory Method,简单的方式,不简单的应用。 1.意图定义一个用于创建对象的接口,让子类决定实例化哪个类。工厂方式模式使一个类的实例化延迟到其子类。热门词汇:虚构造器 延迟 创建对...

weixin_34112900的博客 299

Android的设计模式-简单工厂模式

Android的设计模式系列文章介绍,欢迎关注,持续更新中: Android的设计模式-设计模式的六大原则 创建型模式: Android的设计模式-单例模式 Android的设计模式-建造者模式 Android的设计模式-工厂方法模式 Android的设计模式-简单工厂模式 Android的设计模式-抽象工厂模式 Android的设计模式-原型模式 行为型模式: Android的设计模式-策略...

binbinbintony的博客 181

Android开发之Java设计模式

 对于很多C/C++程序员初入Android开发来说,如果你没有认证学习过Java的设计模式,不理解托管语言的OOP设计方法,可能你的应用变得很结构化,对于项目管理、架构扩展来说将会存在很多问题,Android123参看了目前国内很多应用发现很多代码完全就不是一个Java程序员写出来的,虽然能用但是这样设计对于日后的维护等方面将会有很严重的问题.   目前注明的主要有23种设计模式,就常规的J...

weixin_33881753的博客 156

当Android遇上设计模式之工厂方法(Factory)模式

文章目录1. 简单工厂模式2.1 定义2.2 代码实现2.3 使用场景2. 工厂方法模式2.1 定义2.2 代码实现2.3 使用场景 设计模式六大原则: 单一职责原则:就一个类仅有一个引起它变化的原因,即类承担的职责单一性; 开放封闭原则:类、模块、函数等应该是可以扩展的,但是不可修改。换句话说,就是面对需求的改变要尽可能地保证相对稳定,尽量通过扩展的方式而不是修改原有的代码来实现。 ...

老蒋也疯狂 3630

Android设计模式之23种设计模式一览

Android设计模式之23种设计模式一览 一  什么是设计模式? (1)基本定义:设计模式(Design pattern)是一套被反复使用的代码设计经验的总结。使用设计模式的目的是为了可重用代码、让代码更容易被他人理解。设计模式是是软件工程的基石脉络,如大厦的结构一样。 (2)Design pattern的四大要素:模式名称(Name),问题(Question),解决方案(Solu

happy_horse的博客 2万+

部分JAVA设计模式在Android中的体现。

设计模式在安卓中的体现 。 代理模式: 创建代理类,就是为其他对象提供一种访问代理, 常用的类ActivityManager,, 它相当于代理模式的类图中的client。在这个类中,可以看到大量的getxxx函数,这些函数, 都会调用到ActivityManagerNative类的getDefault()方法,而该方法会获得一个共用的单例的IActivityManager引用,

693的专栏 473

Android中用到了哪些设计模式?

所谓活学活用,学习了设计模式,作为一个Android开发者,你知道Android中哪些地方使用到了设计模式吗? 1. 简单工厂模式——BitmapFactory 将具体的实例化工作交给一个静态的工厂类来负责,BitmapFactory正是完美符合此思想。 2. 原型模式——各个对象的clone方法,还有一些集合的copy方法。 原型模式通过已有的类复制出一个新的对象,减

山中小僧的进阶之路 1051

小论设计模式及在Android中的应用

本文主要总结下几个常用的设计模式在Android中的使用。涉及到的设计模式如下: 单例模式 工厂模式 策略模式 代理模式 模板方法模式 建造者模式 外观模式 一.单例模式 1.1 模式说明 实现1个类只有1个实例化对象 &amp; 提供一个全局访问点 1.2 作用(解决的问题) 保证1个类只有1个对象,降低对象之间的耦合度 1.3实现方式 其中饿汉模式和静态内部内实现不需要上锁也能保证是线程安...

海峰的博客 2071

Android常用面向对象设计模式

对于开发人员来说,设计模式有时候就是一道坎,但是设计模式又非常有用,过了这道坎,它可以让你水平提高一个档次。而在android开发中,必要的了解一些设计模式又是必须的,因为设计模式在Android源码中,可以说是无处不在。下面要说的java面向对象的设计模式,对于想深入学习设计模式的同学,这里推荐两本书:《Android源码设计模式解析与实战》、《大话设计模式》。 前言 设计模式(Desig...

博由心生,福泽一生 2022
上一篇: Android 音视频开发之自己动手编译 FFmpeg
下一篇: 装饰设计模式在Android开发中的应用
胡小明同学
博客等级 码龄10年 35粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值