Golang - Design Pattern #5: 命令模式 (Command)

更新於 發佈於 閱讀時間約 2 分鐘
raw-image


命令模式:就像你的智能家居遙控器!

你有沒有用過智能家居遙控器,按一下開燈、再按一下關電視?那麼,你可能已經用過命令模式了!


命令模式到底是啥?

想像命令模式就像是你的遙控器上的一堆按鈕。每個按鈕都是一個命令,當你按下去,某些事情就會發生。你不必知道背後的具體工作原理,只需要知道按這個就能開燈,按那個就能關電視。

不囉嗦,直接看看程式碼

package main

import "fmt"

// Command 是命令的接口
type Command interface {
Execute()
}

// 開燈 Command​
type LightOnCommand struct {
Light *Light
}

func (l *LightOnCommand) Execute() {
l.Light.TurnOn()
}

// 關燈 Command
type LightOffCommand struct {
Light *Light
}

func (l *LightOffCommand) Execute() {
l.Light.TurnOff()
}

// 燈​
type Light struct{}

// 開燈
func (l *Light) TurnOn() {
fmt.Println("燈亮了!")
}

// 關燈
func (l *Light) TurnOff() {
fmt.Println("燈熄了!")
}

// Remote 遙控器
type Remote struct {
Command Command
}

func (r *Remote) PressButton() {
r.Command.Execute()
}

func main() {
light := &Light{}
lightOn := &LightOnCommand{Light: light}
lightOff := &LightOffCommand{Light: light}

remote := &Remote{}

remote.Command = lightOn
remote.PressButton()

remote.Command = lightOff
remote.PressButton()
}

這個程式碼展示了一個簡單的燈和遙控器。你可以按遙控器的按鈕來開燈或關燈,不必知道它背後是怎麼工作的。


總結

命令模式就像是我們生活中的遙控器,使我們的生活變得更加便利。在程式設計中,它可以幫助我們更好地組織和管理代碼,使我們的系統更加模組化和靈活。所以下次當你拿起遙控器時,也許會想到這背後的命令模式哦!

avatar-img
31會員
194內容數
歡迎來到【代碼的詩情】:探索程式語言之美 系列,這是一場優雅的程式之旅,透過詩歌的抒發,尋找不同程式語言的美感和精髓。 在這個系列中,我們將透過文字的韻律,深入探索多種程式語言的核心概念和語法,以及它們獨特的應用和技巧。每一篇詩歌都是一個故事,每一段代碼都是一句詩句,讓代碼的旋律和詩情在其中相互交織。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
KH Huang的沙龍 的其他內容
有沒有想過,當你在YouTube訂閱了一個頻道,每當有新影片,你就會得到通知呢?這背後就是觀察者模式在運作!
當面臨多種算法或策略的選擇,策略模式可以作為一個非常有效的解決方案。它允許我們在運行時選擇不同的策略,從而使程式碼更加靈活和可擴展。
工廠模式 (Factory) 在物件創建中佔有舉足輕重的位置,讓我們能以更模組化的方式管理物件的生成。這篇文章將帶領你深入工廠模式在Go語言中的實踐。
哈囉!繼續我們的Go設計模式之旅,今天我們要探討的是「單例模式」。可能你已經聽過它,也可能還沒。但不用擔心,我們會從基礎解釋開始!
大家好,歡迎來到「Golang - Design Pattern」系列文!你或許已經聽過「設計模式」這四個字,或者你可能還不太清楚它在軟體開發中的角色。不管你是哪一種情況,我們都會從頭開始,循序漸進地為你解鎖Go語言在設計模式中的神奇之處。 簡介 設計模式是什麼呢?簡單地說,它就是一套「最佳
有沒有想過,當你在YouTube訂閱了一個頻道,每當有新影片,你就會得到通知呢?這背後就是觀察者模式在運作!
當面臨多種算法或策略的選擇,策略模式可以作為一個非常有效的解決方案。它允許我們在運行時選擇不同的策略,從而使程式碼更加靈活和可擴展。
工廠模式 (Factory) 在物件創建中佔有舉足輕重的位置,讓我們能以更模組化的方式管理物件的生成。這篇文章將帶領你深入工廠模式在Go語言中的實踐。
哈囉!繼續我們的Go設計模式之旅,今天我們要探討的是「單例模式」。可能你已經聽過它,也可能還沒。但不用擔心,我們會從基礎解釋開始!
大家好,歡迎來到「Golang - Design Pattern」系列文!你或許已經聽過「設計模式」這四個字,或者你可能還不太清楚它在軟體開發中的角色。不管你是哪一種情況,我們都會從頭開始,循序漸進地為你解鎖Go語言在設計模式中的神奇之處。 簡介 設計模式是什麼呢?簡單地說,它就是一套「最佳
你可能也想看
Google News 追蹤
Thumbnail
現代社會跟以前不同了,人人都有一支手機,只要打開就可以獲得各種資訊。過去想要辦卡或是開戶就要跑一趟銀行,然而如今科技快速發展之下,金融App無聲無息地進到你生活中。但同樣的,每一家銀行都有自己的App時,我們又該如何選擇呢?(本文係由國泰世華銀行邀約) 今天我會用不同角度帶大家看這款國泰世華CUB
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
我對開關很有興趣。 開關有很多種,大致可以區分為電器開關、機械開關兩種。 我對電器開關,比較有興趣。 電器開關,可以控制電流通過或不通過。 幾乎所有用電的物品,都有開關。 最常見的如電燈開關,用手開關。 開了,電流通過,燈就亮了。關了,電流不通過,燈就滅了。
Thumbnail
在現代家居設計中,照明不僅僅是提供光源,更是營造氛圍、提升居家生活品質的關鍵元素。合理的照明計畫能夠改變空間的感覺,使家居環境更為舒適、溫馨。其中,直接照明與間接照明是兩種主要的照明方式,它們各有優劣,應根據實際需求靈活運用。本文將深入探討直接照明與間接照明的特點,並提供如何善用這兩種照明方式來
Thumbnail
燭光......LED 燈形成的舒適感各有不同。能否正確使用「光」,則落差甚大......
Thumbnail
什麼是"無主燈設計"? 「無主燈設計」是一種現代的照明方法,它擺脫了傳統使用單一燈具作為房間主要照明的做法。相反,「無主光設計」採用全般照明、任務照明和重點照明的組合來創建多層次且多功能的照明環境。目標是提供一種更細緻和靈活的照明方案,可以適應空間內的各種活動和情景。透過在整個房間分佈光源,無主燈
Thumbnail
▪︎咒語描述: 一個簡單金屬金色地球按鈕,金屬材質,簡單的框在物件上,使按鈕有霧面光,調整照明角度並添加反射光。淺白色漸層背景。 ▪︎工具:Copilot ▪︎咒語描述: 一個簡單金屬銀色圓形按鈕,簡單的框在物件上,使金屬按鈕有亮面光,調整照明角度並添加反射光。 按鈕上顯示琺瑯鮮黃綠色圖案:
Thumbnail
智慧照明系統是什麼?Zigbee、 Wi-Fi、藍芽應用一次告訴你! 在互聯網、互聯設備和智慧照明科技的時代,智慧照明系統也迎來了新一波的創新變革,其中包括以Zigbee、Wi-Fi和Bluetooth藍牙作為連接協定在內,RGB、RGBW、RGBCW、tunable white lights
Thumbnail
智能家居技術的崛起,正在重塑我們的日常生活。你有想過一個問題嗎? 這究竟改變了什麼? 在這篇文章中,我們將深入探討智能家居系統的精華與其應用,助你全面了解這項正不斷進化的技術。智能家居產品如何整合入生活,以及它們的優缺點又分別為何。
Thumbnail
【智能居家市場蓬勃發展,結合AIoT與時尚創立智能居家品牌PLUSONE,打造更便利的居家體驗。(圖/加一智聯提供)】 【李婉如/ 報導】數位化時代,物聯網(IoT)智慧家電正以前所未有的速度改變生活方式,遠端啟動家中空調、窗簾、電視、電燈等,這樣的生活正在進行,「家」是一個生活型態的
Thumbnail
坐下來之後,才發現自己被遙控器包圍了。 座位四周,呈現散亂隊形的電視機遙控器、電視盒遙控器、DVD遙控器、電扇遙控器、冷氣機遙控器、音響遙控器……顏色不同,尺寸不同,按鍵功能各異,遙控距離不等。
Thumbnail
現代社會跟以前不同了,人人都有一支手機,只要打開就可以獲得各種資訊。過去想要辦卡或是開戶就要跑一趟銀行,然而如今科技快速發展之下,金融App無聲無息地進到你生活中。但同樣的,每一家銀行都有自己的App時,我們又該如何選擇呢?(本文係由國泰世華銀行邀約) 今天我會用不同角度帶大家看這款國泰世華CUB
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
我對開關很有興趣。 開關有很多種,大致可以區分為電器開關、機械開關兩種。 我對電器開關,比較有興趣。 電器開關,可以控制電流通過或不通過。 幾乎所有用電的物品,都有開關。 最常見的如電燈開關,用手開關。 開了,電流通過,燈就亮了。關了,電流不通過,燈就滅了。
Thumbnail
在現代家居設計中,照明不僅僅是提供光源,更是營造氛圍、提升居家生活品質的關鍵元素。合理的照明計畫能夠改變空間的感覺,使家居環境更為舒適、溫馨。其中,直接照明與間接照明是兩種主要的照明方式,它們各有優劣,應根據實際需求靈活運用。本文將深入探討直接照明與間接照明的特點,並提供如何善用這兩種照明方式來
Thumbnail
燭光......LED 燈形成的舒適感各有不同。能否正確使用「光」,則落差甚大......
Thumbnail
什麼是"無主燈設計"? 「無主燈設計」是一種現代的照明方法,它擺脫了傳統使用單一燈具作為房間主要照明的做法。相反,「無主光設計」採用全般照明、任務照明和重點照明的組合來創建多層次且多功能的照明環境。目標是提供一種更細緻和靈活的照明方案,可以適應空間內的各種活動和情景。透過在整個房間分佈光源,無主燈
Thumbnail
▪︎咒語描述: 一個簡單金屬金色地球按鈕,金屬材質,簡單的框在物件上,使按鈕有霧面光,調整照明角度並添加反射光。淺白色漸層背景。 ▪︎工具:Copilot ▪︎咒語描述: 一個簡單金屬銀色圓形按鈕,簡單的框在物件上,使金屬按鈕有亮面光,調整照明角度並添加反射光。 按鈕上顯示琺瑯鮮黃綠色圖案:
Thumbnail
智慧照明系統是什麼?Zigbee、 Wi-Fi、藍芽應用一次告訴你! 在互聯網、互聯設備和智慧照明科技的時代,智慧照明系統也迎來了新一波的創新變革,其中包括以Zigbee、Wi-Fi和Bluetooth藍牙作為連接協定在內,RGB、RGBW、RGBCW、tunable white lights
Thumbnail
智能家居技術的崛起,正在重塑我們的日常生活。你有想過一個問題嗎? 這究竟改變了什麼? 在這篇文章中,我們將深入探討智能家居系統的精華與其應用,助你全面了解這項正不斷進化的技術。智能家居產品如何整合入生活,以及它們的優缺點又分別為何。
Thumbnail
【智能居家市場蓬勃發展,結合AIoT與時尚創立智能居家品牌PLUSONE,打造更便利的居家體驗。(圖/加一智聯提供)】 【李婉如/ 報導】數位化時代,物聯網(IoT)智慧家電正以前所未有的速度改變生活方式,遠端啟動家中空調、窗簾、電視、電燈等,這樣的生活正在進行,「家」是一個生活型態的
Thumbnail
坐下來之後,才發現自己被遙控器包圍了。 座位四周,呈現散亂隊形的電視機遙控器、電視盒遙控器、DVD遙控器、電扇遙控器、冷氣機遙控器、音響遙控器……顏色不同,尺寸不同,按鍵功能各異,遙控距離不等。