android——设计模式(工厂模式)

news/2024/10/5 23:03:22/

一、工厂模式

Android 设计模式中的工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式,而不必暴露其内部的创建逻辑。在Android中,工厂模式通常用于管理复杂组件实例化的过程,比如创建各种View、Activity、Fragment等。通过将组件的创建过程封装在一个单独的类或者接口中,可以方便地改变实现细节而无需修改客户端代码。

以下是工厂模式的基本步骤:

  1. 定义一个抽象工厂接口或类,声明能够创建所需对象的方法。
  2. 创建各个具体的工厂类,每个类都负责生产一种类型的对象。
  3. 使用工厂方法来请求所需的对象,这会返回一个已经配置好的对象实例。

 示例:各个医院的个性化代码都抽取出来放到一个地方统一管理

interface IHospital {fun getProjectInfo()
}
/*** 默认的医院*/
class DefaultHospital : IHospital {override fun getProjectInfo() {println("DefaultHospital--getProjectInfo 共同的方法!")}// 定义一个非接口的方法fun fetch() {println("DefaultHospital is fetching!")}
}
/*** ZJ医院*/
class ZjyyHospital : IHospital {override fun getProjectInfo() {println("ZjyyHospital--getProjectInfo 共同的方法!")}// 定义一个非接口的方法fun purr() {println("ZjyyHospital is purring!")}}
// 医院工厂
object HospitalFactory {private val mZjyyHospital = ZjyyHospital()private val mDefaultHospital = DefaultHospital()fun create(type:Int): IHospital {return when(type) {0 -> mZjyyHospitalelse -> mDefaultHospital}}
}

在main中使用:

val zHospital = HospitalFactory.create(0)zHospital.getProjectInfo() // 接口中的方法可以直接调用if (zHospital is ZjyyHospital){zHospital.purr() // 个性化的方法需要判断医院}


http://www.ppmy.cn/news/1473521.html

相关文章

【Arm技术日:为AI终端准备了哪些新基石?】

过去一年,移动终端设备的长足进步令人赞叹,例如人工智能 (AI) 从手机到笔记本电脑的巨大创新,并诞生了“新一代 AI 手机”和 AIPC。据IDC预测,2024年全球新一代AI手机的出货量将达到1.7亿部,占智能手机市场总量的近15%…

并发控制-事务的调度、数据不一致问题(更新丢失、脏读、不可重复读)、非串行调度的的可串行化

一、引言 1、数据库管理系统DBMS的事务处理技术实现的另一个主要功能部分是并发控制机制。并发控制机制完成的功能就是对并发执行的事务进行控制,保证事务的隔离性,从而进一步保持数据库的一致性。 2、事务的并发控制就是对并发执行的不同事务中的数据…

微信小程序订单发货管理接入

订单发货管理接入指引:https://mp.weixin.qq.com/cgi-bin/announce?token1148555877&actiongetannouncement&key11671435333v04b2&version1&langzh_CN&platform2https://mp.weixin.qq.com/cgi-bin/announce?token1148555877&actiongetann…

雷电模拟如何换ip地址 手机模拟器ip修改方法

很多游戏爱好者会使用雷电模拟器多开窗口,若模拟器窗口开多了,IP地址是一样的就怕有限制,很容易被游戏后台检测到,从而产生被封号的风险。 那么怎么更换自己电脑手机模拟器IP地址呢,今天就教大家一个修改模拟器IP地址的…

优先队列在数据结构中的作用与实现方式

优先队列在数据结构中的作用与实现方式 大家好,我是微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 优先队列简介 1. 什么是优先队列? 优先队列(Priority Queue)是一种特殊…

对接海康sdk-linux下复制jar包中resource目录的文件夹

背景 在集成海康sdk时,需要将一些组件放到项目中作为静态资源,并且海康的sdk初始化也需要加载这些静态资源,在windows下,使用一些File路径的方式是可以正确加载的,但是在linux上就会加载失败。 首先我是将海康的sdk组件放到resource下的,并且按照windows和linux设置了两…

redis-cluster(集群模式搭建)

redis中间件版本: redis-5.0.5环境介绍 这里使用服务器数量3,分别为172.0.0.1,172.0.0.2,172.0.0.3,每台机器redis节点数量2个,共6个redis节点构成redis-cluster模式。编译安装包 在172.0.0.1的机器上进入安装目录 cd …

学习笔记——动态路由——OSPF(邻接/邻居)

十、OSPF的邻接/邻居 1、OSPF路由器之间的关系 (1)基本介绍 在OSPF网络中,为了交换链路状态信息和路由信息,邻居设备之间首先要建立邻接关系,邻居(Neighbors)关系和邻接(Adjacencies)关系是两个不同的概念。 OSPF路由器的两种关系&#x…