游戲中的設計模式——第三篇 簡單工廠模式

5. 簡單工廠模式

5.1 簡單工廠模式的定義

簡單工廠模式的核心是定義一個創建對象的接口,將對象的創建和本身的業務邏輯分離,降低系統的耦合度,使得兩個修改起來相對容易些,當以后實現改變時,只需要修改工廠類即可。

5.2 簡單工廠模式的作用

用戶不需要知道所有工廠方法的實現,只需要根據自己的需求,把需求告訴工廠類,工廠直接進行生產,將用戶和生產隔離開。

5.3 例子

同樣以鳴潮卡池為例,當我們打開換取頁面的時候,會打開抽卡頁面,在這個頁面里面有一列按鈕,分別對應著不同的卡池,而這個卡池可以看作我們的工廠產品。(首先聲明,鳴潮不同卡池除了圖片不同,頁面好像是相同的UI,但是我們為了舉例形象就當作是不同的UI)。
突然想到其實例子是對的,因為鳴潮卡池UP池和普池是不一樣的,武器普池可以自選。(現實中為了考慮方便和資源包體的大小,大概率是動態生成一個按鈕綁定事件,這里我們假設是不同的ui資源頁面方便理解)
在這里插入圖片描述
那么開始實現一個卡池切換創建出不同的卡池頁面的簡單工廠:

using UnityEngine;
using UnityEngine.Video;// 枚舉頁簽類型
public enum EnumPageNodeType
{Up,Normal,// 其他類型
}public interface IPageNode
{void OnClickGachaBtn(GameObject obj);
}public abstract class AbstractPageNode : IPageNode
{protected VideoPlayer video;protected Button gachaBtn;public abstract void OnClickGachaBtn(GameObject obj);
}// 限定獎池頁簽
public class UpGachaPageNode : AbstractPageNode
{protected VideoPlayer video;protected Button gachaBtn;public override void OnClickGachaBtn(GameObject obj){// 抽卡}
}// 普通獎池頁簽
public class NormalGachaPageNode : AbstractPageNode
{protected VideoPlayer video;protected Button gachaBtn;protected Button selectBtn;public override void OnClickGachaBtn(GameObject obj){// 抽卡}public void OnClickSelectBtn(GameObject obj){// 打開選擇目標五星頁面}
}// 抽卡頁簽工廠
public class CtreatGachaPageNodeSimpleFactory
{private static CtreatGachaPageNodeSimpleFactory instance;public static CtreatGachaPageNodeSimpleFactory Instance{get{if(instance == null)instance = new CtreatGachaPageNodeSimpleFactory();return instance;}}public AbstractPageNode CreatePageNode(EnumPageNodeType nodeType, GameObject node){AbstractPageNode uiNode = null;switch (nodeType){case EnumPageNodeType.Normal:uiNode = node.Make<NormalGachaPageNode>();break;case EnumPageNodeType.Up:uiNode = node.Make<UpGachaPageNode>();break;default:break;}return uiNode;}
}

至此,我們利用簡單工廠模式制作了一個動態創建抽卡活動下子頁簽的功能。圖中示例僅供參考,實際開發中使用什么方式去實現對應功能需要具體分析。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/96130.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/96130.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/96130.shtml

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

相關文章

基于SVN搭建企業內部知識庫系統實踐

一、準備工作 CentOS 7 服務器&#xff1a;確保你有 root 或 sudo 權限&#xff0c;可以訪問該服務器。Windows 客戶端&#xff1a;你將需要在 Windows 上安裝 TortoiseSVN 客戶端來與 SVN 服務器交互。防火墻&#xff1a;確保你的防火墻已開放 3690 端口&#xff0c;用于 SVN…

SQL注入7----(盲注與回顯)

一.前言 在我們的注入語句被帶入數據庫查詢但卻什么都沒有返回的情況我們該怎么辦&#xff1f;例如應用程序就會返回 一個"通用的"的頁面&#xff0c;或者重定向一個通用頁面&#xff08;可能為網站首頁&#xff09;。這時&#xff0c;我們之前學習的SQL注入辦 法就…

尚硅谷宋紅康JVM全套教程(詳解java虛擬機)

https://www.bilibili.com/opus/1071553679925968898 案例7&#xff1a;日均百萬訂單系統JVM參數設置 https://github.com/wei198621/jvm_by_atguigu https://github.com/xftxyz2001/atguigu-jvm/blob/main/JavaYouthdocsJVM/%E7%AC%AC1%E7%AB%A0-JVM%E4%B8%8EJava%E4%BD%…

鴻蒙NEXT開發實戰:圖片顯示、幾何圖形與自定義繪制詳解

探索HarmonyOS NEXT強大的圖形渲染能力&#xff0c;從圖片展示到自定義繪圖 HarmonyOS NEXT作為華為自主研發的操作系統&#xff0c;為開發者提供了一套豐富而強大的圖形渲染能力。無論是顯示圖片、繪制幾何圖形&#xff0c;還是實現復雜的自定義繪圖&#xff0c;鴻蒙都提供了簡…

python + Flask模塊學習 2 接收用戶請求并返回json數據

用到的模塊還是flask&#xff0c;用到的類有Flask&#xff0c; request&#xff0c; jsonfiy &#x1f642; 目錄 1、GET請求 2、POST請求 1、表單格式 2、json格式 就醬&#xff0c;也比較簡單&#xff0c;下一篇說簡單的授權&#xff0c;簡單來說就是比如用戶付費買了服…

國內外常用的免費BUG管理工具選型

幫助用戶根據自身情況做決定&#xff0c;比如團隊規模、技術能力、是否需要移動端支持等。避免只是羅列工具&#xff0c;而是提供實際選擇的維度。 國內外常用的免費BUG管理工具選擇非常豐富&#xff0c;從輕量級到功能全面型都有覆蓋。我將它們分為幾類&#xff0c;并詳細介紹…

JavaScript的事件循環機制

1.事件循環的理解JavaScript是單線程的&#xff0c;意味著它一次只能執行一個任務。而事件循環就是去協調在JavaScript環境中運行的同步任務、異步任務(微任務、宏任務)的執行順序的一種機制。它是 JavaScript 實現單線程非阻塞異步執行的核心。2.事件循環的執行順序同步任務—…

數據結構——棧(Java)

目錄 一定義. 入棧 出棧 二.棧與線性表的關系 三.棧的實現方式 四.鏈表實現棧 1.結點的API設計 2.棧的API設計 2.1棧的初始化設計 2.2元素入棧 2.3元素出棧 五.括號匹配問題 完整代碼展示 答案 一定義. 棧是一種基于先進后出&#xff08;FILO&#xff09;的數據…

科研筆記:數學建模啟發的課題研究方法

借鑒數學建模的思路解決科學問題或開展課題研究&#xff0c;核心是將實際問題抽象為數學框架&#xff0c;通過定量分析、邏輯推演和驗證優化&#xff0c;實現對問題的精準描述、解釋或預測。其本質是“從現實到數學&#xff0c;再從數學回歸現實”的迭代過程&#xff0c;適用于…

Agent落地到底選擇LangChain 還是 LangGraph

核心概念 LangChain:一個用于構建由大型語言模型驅動的應用程序的框架。它提供了大量的組件和現成的鏈,旨在簡化和標準化應用程序與LLM交互的過程。 LangGraph:一個用于在LangChain之上構建有狀態、多參與者的 工作流 的庫。它特別擅長處理具有循環、分支和復雜協調的代理(…

ChatGPT下的相關聊天提示詞

問&#xff1a;如果我覺得一個子對話里&#xff0c;聊天聊得太多&#xff0c;在這個項目下新開一個子對話&#xff0c;但是不想把上次太多的信息 都復制過來&#xff0c;有沒有什么辦法關鍵詞&#xff1a;項目、子對話&#xff0c;上下文ChatGPT:有辦法的 ?在 ChatGPT 里&…

最新PDF版本!Acrobat Pro DC 2025,解壓即用版

軟件介紹 Adobe Acrobat Pro DC 2025 是全球知名的 PDF 編輯神器&#xff0c;被稱為 “最牛 PDF 工具”&#xff0c;能輕松解決 PDF 編輯、創建、轉換等難題&#xff0c;本次分享的版本解壓即可使用。 軟件特點 然解壓即可使用不用登錄注冊最新版本 軟件使用 我們打開軟件選…

XX汽集團數字化轉型:全生命周期網絡安全、數據合規與AI工業物聯網融合實踐

引言&#xff1a;數字化轉型中的安全與效率雙輪驅動作為中國汽車行業的龍頭企業&#xff0c;XX汽集團近年來積極推進數字化轉型&#xff0c;通過構建全生命周期網絡安全體系、完善數據合規治理框架&#xff0c;并深度融合AI工業物聯網技術&#xff0c;實現了生產成本顯著降低和…

云原生部署_Docker入門

Docker是啥Docker是一個開源的容器化平臺&#xff0c;可以幫助開發者將應用程序和其依賴的環境打包成一個可移植、可部署的容器。Docker的主要目標是通過容器化技術&#xff0c;實現應用程序的快速部署、可移植性和可擴展性&#xff0c;從而簡化應用程序的開發、測試和部署過程…

【大數據專欄】大數據框架-Apache Druid Overview

目錄 Architecture Advantages and disadvantages 從架構以及設計可以得出結論&#xff0c;Durid不支持ACID事務&#xff0c;基于時間戳列和維度列去查詢&#xff0c;所以適合基于時間做分組和學列的查詢操作。 Advantages優勢&#xff1a; 實時數據攝取與查詢 支持秒級數據攝…

云平臺面試內容(一)

1. 云計算的優點、服務模型區別及云部署模式 云計算優點: 云計算具有顯著的優勢,包括無需自建機房和硬件投入,資源即開即用并支持彈性伸縮,按需付費使成本透明可控。企業可以在數分鐘內完成全球范圍的部署,縮短上線周期。同時云平臺提供高可用性和安全性,多副本容災保證數…

嵌入式 - 硬件:51單片機(2)

本節重點&#xff1a;1. GPIO輸入模式、輸出模式2. 按鍵工作原理&#xff08;GPIO輸入&#xff09;3. 中斷概念4. 中斷源概念、中斷源個數、哪幾個中斷源5. 外部中斷、定時器中斷概念6. 中斷處理流程&#xff1a;7. 51單片機中定時器的個數&#xff1f;類型8. 16位定時器和8位…

C語言中奇技淫巧07-使用GCC棧保護選項檢測程序棧溢出

-fstack-protector 是 GCC 和 Clang 編譯器提供的一種棧保護&#xff08;Stack Smashing Protection, SSP&#xff09; 機制&#xff0c;用于檢測和防御常見的緩沖區溢出攻擊&#xff08;特別是棧溢出&#xff09;。它通過在函數的棧幀中插入特殊的“金絲雀值”&#xff08;can…

.NET 8.0 Web API JWT 身份驗證和基于角色的授權

在當今的數字環境中&#xff0c;保護 Web 應用程序的安全至關重要。隨著 .NET 8.0 的不斷發展&#xff0c;它提供了強大的工具來確保您的 API 既安全又高效。 示例代碼&#xff1a;https://download.csdn.net/download/hefeng_aspnet/91490262 如果您喜歡此文章&#xff0c…

ZYNQ SDK軟件在線調試

1、然后右鍵項目->debug as->launch on hardware2、從左到右分別是&#xff1a;運行程序到設置的斷點暫停運行終止斷開連接步進&#xff08;進入函數內部&#xff09;跳過&#xff08;不進入函數內部&#xff09;跳出函數3、雙擊添加斷點&#xff0c;然后點擊運行可以讓程…