android——設計模式(工廠模式)

一、工廠模式

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.pswp.cn/diannao/41862.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/41862.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/41862.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Docker實戰教程(二)

文章目錄 基于Docker的微服務架構案例一、準備工作二、服務定義1. 用戶服務(User Service)2. 訂單服務(Order Service)3. 前端服務(Frontend Service)三、Docker Compose文件四、啟動微服務架構五、常見問題和解決方案六、總結基于Docker的微服務架構案例 在本案例中,我…

悠律凝聲環開放式耳機強者現身:集顏值和創新技術于一體的杰作

隨著技術的飛速發展,藍牙耳機已經成為人們生活中不可缺少的一環,外觀、音質以及實用性已經成為人們在購買時最主要的考慮因素。悠律凝聲環RingBuds Pro開放式藍牙耳機,憑借其特有的輕奢時尚外觀,斬獲2024年度MUSE繆斯創意獎金獎&a…

Android SeekBar設置指示器標簽,使用PopupWindow的方式

給Android 原生的SeekBar控件添加一個指示器標簽;記錄一下 按下時彈出popupwindow,進度條更新時刷新pw,松開時關閉pw; public class SeekBarPopUtils {private static PopupWindow popWin null;private static ConstraintLayou…

Kotlin協程使用詳解

協程是什么 協程是一種編程思想,并不局限于特定的語言。協程是輕量級的線程,基于線程池API,通俗的來說,就是官方提供的線程框架。協程的調度完全由用戶控制。協程擁有自己的寄存器上下文和棧。當我們在了解協程的時候,不可避免的會跟線程、進程作比較作分析,下面來貼個圖…

數據可視化之智慧城市的脈動與洞察

在數字化轉型的浪潮中,城市作為社會經濟發展的核心單元,正經歷著前所未有的變革。城市數據可視化大屏看板作為這一變革中的重要工具,不僅極大地提升了城市管理效率,還為公眾提供了直觀、全面的城市運行狀態視圖,成為智慧城市建設不可或缺的一部分。本文將深入探討以“城市…

ruoyi后臺修改

一、日志文件過大分包 \ruoyi-admin\src\main\resources\logback.xml <!-- 系統日志輸出 --> <appender name"file_info" class"ch.qos.logback.core.rolling.RollingFileAppender"><file>${log.path}/sys-info.log</file><!…

網安小貼士(9)網絡解密

一、前言 網絡解密技術的發展是一個不斷進化的過程&#xff0c;它與加密技術的進展緊密相連。 二、定義 網絡解密&#xff08;Network Decryption&#xff09;通常指的是在計算機網絡環境中&#xff0c;將加密的數據轉換回其原始可讀格式的過程。這個過程需要使用正確的密鑰…

0701_ARM5

練習&#xff1a;使用usart4 main.c #include "uart4.h"int main() {// 初始化 UART4hal_uart4_init();while (1) {// 發送一個字符串//hal_put_char( hal_get_char());hal_put_string(hal_get_string());}return 0; } usart4.c #include "uart4.h"//**…

ctfshow-web入門-文件包含(web88、web116、web117)

目錄 1、web88 2、web116 3、web117 1、web88 沒有過濾冒號 : &#xff0c;可以使用 data 協議&#xff0c;但是過濾了括號和等號&#xff0c;因此需要編碼繞過一下。 這里有點問題&#xff0c;我 (ls) 后加上分號發現不行&#xff0c;可能是編碼結果有加號&#xff0c;題目…

Spark MLLib面試題你會幾道?(萬字長文)

目錄 簡述Spark MLLib的主要組件及其功能 Spark MLLib支持哪些機器學習算法? 解釋RDD(彈性分布式數據集)的概念及其在MLLib中的作用 在Spark MLLib中,LabeledPoint是什么?如何使用它? 描述DataFrame和Dataset API在Spark MLLib中的重要性 什么是ML Pipeline?它解決…

【反悔堆 優先隊列 臨項交換 決策包容性】630. 課程表 III

本文涉及知識點 貪心 反悔堆 優先隊列 臨項交換 Leetcode630. 課程表 III 這里有 n 門不同的在線課程&#xff0c;按從 1 到 n 編號。給你一個數組 courses &#xff0c;其中 courses[i] [durationi, lastDayi] 表示第 i 門課將會 持續 上 durationi 天課&#xff0c;并且必…

WordPress網站違法關鍵詞字過濾插件下載text-filter

插件下載地址&#xff1a;https://www.wpadmin.cn/2025.html 插件介紹 WordPress網站違法關鍵詞字過濾插件text-filter由本站原創開發,支持中英文關鍵字自動替換成**號&#xff0c;可以通過自定義保存修改按鈕增加“預設關鍵字”&#xff0c;也可以導入定義好的txt文本形式的關…

實現模型貼圖的移動縮放旋轉

技術&#xff1a;threejscanvasfabric 效果圖&#xff1a; 原理&#xff1a;threejs中沒有局部貼圖的效果&#xff0c;只能通過map 的方式貼到模型上&#xff0c;所以說換一種方式來實現&#xff0c;通過canvasfabric來實現圖片的移動縮放旋轉&#xff0c;然后將整個畫布以map…

數據集 | 人臉公開數據集的介紹及下載地址

本文介紹了人臉相關算法的數據集。 1.人臉數據集詳情 1.1.Labeled Faces in the Wild (LFW) 論文 下載地址&#xff1a;LFW Face Database : Main (umass.edu) 是目前人臉識別的常用測試集&#xff0c;其中提供的人臉圖片均來源于生活中的自然場景&#xff0c;因此識別難度會…

DDR的拓撲與仿真

T型拓撲 vs Fly-by 由于T型拓撲在地址、命令和時鐘都是同時到達每個DDR芯片&#xff0c;所以同步的切換噪聲會疊加在一起&#xff0c;DDR越多這個信號上疊加的噪聲越大&#xff0c;T型拓撲的優點是地址、命令和時鐘都是同時到達&#xff0c;所以不需要做寫均衡Write leveling。…

Node.js 生成vue組件

在項目根目錄下創建 create.js /*** 腳本生成vue組件* 主要是利用node自帶的fs模塊操作文件的寫入* ===========================================* 準備步驟:* 1.輸入作者名* 2.輸入文件名* 3.輸入菜單名* 4.輸入文件地址* ============================================* 操…

【路徑規劃】基于A星算法實現機器人柵格地圖徑規劃附Matlab代碼

% 機器人柵格地圖路徑規劃(A*算法) % 假設你已經有了柵格地圖數據和起點終點坐標 % 柵格地圖數據 grid_map = your_grid_map_data; % 柵格地圖數據,0表示可行區域,1表示障礙物區域 % 起點和終點坐標 start = your_start_coordinates; % 起點坐標,格式為[x, y] goal = yo…

【3D->2D轉換(1)】LSS(提升,投放,捕捉)

Lift, Splat, Shoot 這是一個端到端架構&#xff0c;直接從任意數量的攝像頭數據提取給定圖像場景的鳥瞰圖表示。將每個圖像分別“提升&#xff08;lift&#xff09;”到每個攝像頭的視錐&#xff08;frustum&#xff09;&#xff0c;然后將所有視錐“投放&#xff08;splat&a…

AI助手崛起:開發者的新伙伴還是未來替代者?

你好&#xff0c;我是三橋君。 自從 ChatGPT 問市以來&#xff0c;AI 將取代開發者的聲音不絕于耳&#xff0c;至今還是互聯網異常火熱的問題。 在軟件開發領域&#xff0c;生成式人工智能&#xff08;AIGC&#xff09;正在改變開發者的工作方式。無論是代碼生成、錯誤檢測還是…

【JavaWeb程序設計】JSP編程

目錄 一、編寫JSP頁面&#xff0c;在界面上顯示1-9&#xff0c;9個鏈接&#xff0c;單擊每個鏈接&#xff0c;能夠在另一個頁面打印該數字的平方。 1. 運行截圖 2. 第一個jsp頁面&#xff08;index.jsp&#xff09; 3. 第二個jsp頁面&#xff08;square.jsp&#xff09; 二…