Unity C# | Design Pattern

閱讀時間約 3 分鐘

一、前言

  這篇文章將會簡單介紹物件導向的設計模式,以及學習這項技術需要有哪些先備知識,學習才會比較順利。

二、設計模式

  在物件導向中,除了最基本的五大原則以外,其實還有一知名的概念,那就是設計模式(Design Pattern),它能運用到很多層面。

1. 解決一再出現的問題

  許多程式設計的問題都是類似的問題,例如場景切換與武器切換,這兩個雖然在做不同的事情,但都可以同時使用一個叫做狀態模式的設計模式,因為它們的解題思路是相同的概念。
  當程式設計的問題一再出現以後,這皆問題就會有一種慣用的解法或通用的道理,而我們也可以反推回去,學習一些常常使用的解法再進行修改,讓它可以解決多種不同的問題。

2. 解決問題的方案及核心關鍵

  設計模式並不是解決某個特定的問題,而是某些通用的概念,也因此這會是一個相當抽象的知識,因此學習的時候搭配某些固定的問題,或是某些範例,對於學習設計模式會是有幫助的做法。
  在設計模式中,這些拿來做為範例與教學的模式,都是精簡到不能再精簡的內容,依據不同的問題要增加不同的程式來進行搭配,它們是用於解決問題的核心架構。

3. 可以重複使用的解決方案

  這些設計模式能套用到不同專案上面,除非運用設計模式後,又添加了許多寫死的程式,否則大多數的程式腳本在細心維護的情況下,是可以移動到其他專案使用。
  其實不管有沒有學習物件導向的設計思路,在撰寫程式的過程中,或多或少都會使用到一些設計模式,因為事先有問題才出現解決通則,而當你解決問題的時候,也自然會接近大家常用的解題方法。

三、學習前提

  這篇文章除了介紹設計模式以外,還會講述一些學習這份知識的前提,像我目前只是勉強達成能閱讀的門檻,但熟悉設計模式的過程中依然會有很多新的問題產生。

1. 撰寫過完整的程式

  首先,當然是已經有寫過程式的經驗,這個經驗多寡會決定學習設計模式的速度,對大多數的大學生而言,例如遊戲設計,只要有經手兩到三個遊戲專案程式,那就可以試著去了解設計模式。

2. 熟悉UML類圖

  在大多數的設計模式教學中,無論是書本還是網路上的資源,都會搭配UML圖來進行介紹,這是因為UML圖是用來講述程式架構的一種可視化程式設計的製圖技術,非常適合用來講述設計模式。
  這也是一個大型專案常使用到的技術,甚至會獨立出一個專門職業來繪製UML圖的設計,給予其他程式員空間,花費更多時間開發產品與專研程式技術。

3. 熟悉介面、抽象類別、虛擬

  這是一個隱性的必要內容,因為設計模式牽涉到解決問題的解法,屬於較為高階的程式設計內容,學習設計模式可能需要了解介面(interface)、抽象類別(abstract)、虛擬(Vitrual)這幾個抽象的概念。
  這些抽象概念在學習設計模式的過程中會頻繁看到,並且作為眾多設計模式運作的基礎,有不少設計模式的核心概念其實就是這幾個抽象概念的應用,並且針對特定的問題而已。

四、後記

  這篇文章只是作為一個介紹,我不太確定自己是否能學習好設計模式,而且目前沒有太必要的需求,更多的是模仿網路上的學習資源即可,因此未來不一定會撰寫太多設計模式的東西。
為什麼會看到廣告
avatar-img
106會員
247內容數
對設計師如何成長為設計師好奇嗎? 2020年九月,我進入大學學習當一位設計師,從開始到沉寂,再到重燃熱忱,我將在方格子紀錄我的成長歷程、理念、心情,分享我在這段旅程中所經歷的故事。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
瓶裝雪的沙龍 的其他內容
這篇文章將會講述最近的一個程式設計體悟,並且分享近期要參加的獨立遊戲製作者聚會,會展示課程的其中一個作品。
這篇文章將會分享與老師討論,在遊戲設計中設計元素之間的比重與遊戲要注重的設計重點或賣點。
這篇文章將會介紹 Unity Input System,這是一個適用於不同平台切換的官方系統,用於玩家按鍵輸入與不同控制器的操作。
這篇文章將會快速介紹非同步函式(Async / Await)的簡易使用方式。
這篇文章將會介紹 UGUI ,以及如何使用程式碼控制 UGUI 的座標。
這篇文章將會講述 Unity C# 中關於 Interface (介面/接口)的基本介紹以及原理說明,最後提供完整的使用流程。
這篇文章將會講述最近的一個程式設計體悟,並且分享近期要參加的獨立遊戲製作者聚會,會展示課程的其中一個作品。
這篇文章將會分享與老師討論,在遊戲設計中設計元素之間的比重與遊戲要注重的設計重點或賣點。
這篇文章將會介紹 Unity Input System,這是一個適用於不同平台切換的官方系統,用於玩家按鍵輸入與不同控制器的操作。
這篇文章將會快速介紹非同步函式(Async / Await)的簡易使用方式。
這篇文章將會介紹 UGUI ,以及如何使用程式碼控制 UGUI 的座標。
這篇文章將會講述 Unity C# 中關於 Interface (介面/接口)的基本介紹以及原理說明,最後提供完整的使用流程。
你可能也想看
Google News 追蹤
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
這個單元我一直很想學習,物件導向 Object Oriented Programming 以前一直以為是一種程式碼,其實是設計程式的觀念,文中我分享了程式碼還有自己想的比喻讓讀者更好理解。除了物件導向,我還介紹其他四種風格的程式碼設計,跟大家一起學習。
Thumbnail
這篇文章介紹了面試時以及開始工作後可能會遇到的問題,包括物件導向OOP、SOLID 設計原則、測試方式,以及 Cookie、Session 與 Cache 的相似處與不同處。提供了豐富的相關資訊。
Thumbnail
本章節是一個初級的 TypeScript 教學,主要介紹了 TypeScript 中物件導向程式設計的各種核心概念,包括類別、建構子、存取修飾子、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda 表達式、泛型和反射等。每個概念都通過詳細的解釋和實例代碼來進行深入的介紹。
※ 工廠模式 定義: 工廠模式是一種實現了「工廠」概念的物件導向設計模式。它提供一個通用的工廠介面,將創建instance(實例)的程式碼交由子類別各自實現,並根據需求去動態地生成相應的物件。這種模式將物件的創建邏輯與使用邏輯分開,使程式碼更容易維護和擴展。 特點: 具有高度標準化和同質性的
※ 單例模式介紹 ※ 定義:單例模式是一種設計模式,確保一個class(類)只有一個實例,並提供一個存取它的全域存取點。無論如何取值,皆只對這個實例取值。 ※ 目的:保證一個類別只會產生一個物件,而且提供存取該物件的統一方法。 ※ 講解:單例模式確保一個類無論怎麼 new 或 get,都只能拿
Thumbnail
在設計有四年快五年的時間,大部分都是從實戰經驗中去不斷摸索產品開發的流程。從視覺傳達的背景出來,在用戶體驗的經驗都是在實際開發中去摸索出來的。不是理論派,只是根據我本人的經驗摸索出來的設計方法,也不會用太多高深的詞彙說明。 以前搜尋怎麼做產品設計?究竟是要從什麼步驟開始的這件事情,大部分看到的
Thumbnail
進入物件導向設計的實戰階段,我們通過建立人力資源管理功能來實踐理論知識。透過這些實作練習,能夠深化對物件導向概念的理解,並學會如何在實際開發中應用這些概念。
Thumbnail
這篇文章主要討論了設計的主客觀問題。透過討論設計師必然面對的主客觀問題,幫助讀者更妥善地處理設計衝突及評價,使設計更趨向完整。
這個系列的文章主要專注於物件導向到函數式編程的差異與分析,並針對概念與機制上的不同進行比較。很多人說物件導向和函數式編程沒有哪個比較好的問題,只有哪個比較適合的問題,然而我並不這麼認為,我透過這一系列的文章從各個角度討論它們之間的優缺點就是為了闡述我的觀點。物件導向錯在沒有理論基礎,但它贏在熟悉性,
讓我在這篇文章總結一下前面對物件導向設計的討論,我們討論了物件導向的四個特性:繼承、抽象、多型、封裝,分析了它們的問題,並跟函數式編程的思維做比較。我們引入了與之相對應的特性:泛型、特性系統、模組化,有些特性雖然跟那四個特性很像,但在一些細微的地方有不同的詮釋,使得整體思考方式很不一樣。 「繼
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
這個單元我一直很想學習,物件導向 Object Oriented Programming 以前一直以為是一種程式碼,其實是設計程式的觀念,文中我分享了程式碼還有自己想的比喻讓讀者更好理解。除了物件導向,我還介紹其他四種風格的程式碼設計,跟大家一起學習。
Thumbnail
這篇文章介紹了面試時以及開始工作後可能會遇到的問題,包括物件導向OOP、SOLID 設計原則、測試方式,以及 Cookie、Session 與 Cache 的相似處與不同處。提供了豐富的相關資訊。
Thumbnail
本章節是一個初級的 TypeScript 教學,主要介紹了 TypeScript 中物件導向程式設計的各種核心概念,包括類別、建構子、存取修飾子、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda 表達式、泛型和反射等。每個概念都通過詳細的解釋和實例代碼來進行深入的介紹。
※ 工廠模式 定義: 工廠模式是一種實現了「工廠」概念的物件導向設計模式。它提供一個通用的工廠介面,將創建instance(實例)的程式碼交由子類別各自實現,並根據需求去動態地生成相應的物件。這種模式將物件的創建邏輯與使用邏輯分開,使程式碼更容易維護和擴展。 特點: 具有高度標準化和同質性的
※ 單例模式介紹 ※ 定義:單例模式是一種設計模式,確保一個class(類)只有一個實例,並提供一個存取它的全域存取點。無論如何取值,皆只對這個實例取值。 ※ 目的:保證一個類別只會產生一個物件,而且提供存取該物件的統一方法。 ※ 講解:單例模式確保一個類無論怎麼 new 或 get,都只能拿
Thumbnail
在設計有四年快五年的時間,大部分都是從實戰經驗中去不斷摸索產品開發的流程。從視覺傳達的背景出來,在用戶體驗的經驗都是在實際開發中去摸索出來的。不是理論派,只是根據我本人的經驗摸索出來的設計方法,也不會用太多高深的詞彙說明。 以前搜尋怎麼做產品設計?究竟是要從什麼步驟開始的這件事情,大部分看到的
Thumbnail
進入物件導向設計的實戰階段,我們通過建立人力資源管理功能來實踐理論知識。透過這些實作練習,能夠深化對物件導向概念的理解,並學會如何在實際開發中應用這些概念。
Thumbnail
這篇文章主要討論了設計的主客觀問題。透過討論設計師必然面對的主客觀問題,幫助讀者更妥善地處理設計衝突及評價,使設計更趨向完整。
這個系列的文章主要專注於物件導向到函數式編程的差異與分析,並針對概念與機制上的不同進行比較。很多人說物件導向和函數式編程沒有哪個比較好的問題,只有哪個比較適合的問題,然而我並不這麼認為,我透過這一系列的文章從各個角度討論它們之間的優缺點就是為了闡述我的觀點。物件導向錯在沒有理論基礎,但它贏在熟悉性,
讓我在這篇文章總結一下前面對物件導向設計的討論,我們討論了物件導向的四個特性:繼承、抽象、多型、封裝,分析了它們的問題,並跟函數式編程的思維做比較。我們引入了與之相對應的特性:泛型、特性系統、模組化,有些特性雖然跟那四個特性很像,但在一些細微的地方有不同的詮釋,使得整體思考方式很不一樣。 「繼