iT邦幫忙

2023 iThome 鐵人賽

DAY 1
0
自我挑戰組

掘地土撥鼠的設計歷險記系列 第 7

Prototype Pattern - 實際應用

  • 分享至 

  • xImage
  •  

Hi 我James啦,上篇文章實作了Prototype 的雛型概念,這篇就不免俗地把它應用在我們上篇例子中。

Introduction

案例背景:目前有間筆電代工廠,然後他主要生產 Asus筆電及ROG系列筆電,但這兩台筆電都是使用同一個電腦原型作為基底。

案例關聯

  • 使用端會新建一電腦原型物件(Prototype)
  • 基於這個 Prototype,再加以設計,最終產出目標筆電 (Labtop)

寫扣啦

UML

https://ithelp.ithome.com.tw/upload/images/20230905/20115082B7emdvMMf6.jpg

Prototype and Labtop

package Prototypes

type Prototype interface {
	Clone(string, string, string) Prototype
	GetType() string
}

type Labtop struct {
	Type    string
	Memory  string
	Storage string
}

// GetType implements Prototype.
func (l *Labtop) GetType() string {
	return l.Type
}

func (l *Labtop) Clone(Type, Memory, Storage string) Prototype {
	return &Labtop{Type, Memory, Storage}
}

main

package main

import (
	"fmt"
	"labtop/Prototypes"
)

func main() {
	labtopPrototype := &Prototypes.Labtop{}

	labotp := labtopPrototype.Clone("Rog", "15GB", "1TB")
	fmt.Println(labotp)
	Dell := labtopPrototype.Clone("Dell", "8GB", "500GB")
	fmt.Println(Dell)
	fmt.Println(labotp)
}

執行結果

https://ithelp.ithome.com.tw/upload/images/20230905/20115082O5hyIk2ehT.jpg

Conclusion

在這個案例中,我們看到了原型模式(Prototype Pattern)如何在節省資源和時間方面發揮其作用。通過建立一個可複製的筆電原型,我們可以更快地創建新的筆電對象,同時保證一致的基本特性。

思考

在這個案例中表明了原型模式可以是一個非常有用的工具,特別是在需要快速並且效率地創建新物件時。然而,當使用這種模式時,我們也需要注意其潛在的限制和挑戰(可參考上一篇缺點)。

未來方向

在未來的擴展中,我們可以考慮添加更多的筆電特性和選項,並探索如何更好地解決複製問題所帶來的問題,以使原型模式更加強大和靈活。


上一篇
Prototype Pattern - 原型模式
下一篇
Object Pool - 物件池模式
系列文
掘地土撥鼠的設計歷險記11
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言