Hi 我James啦,上篇文章實作了Prototype 的雛型概念,這篇就不免俗地把它應用在我們上篇例子中。
案例背景:目前有間筆電代工廠,然後他主要生產 Asus筆電及ROG系列筆電,但這兩台筆電都是使用同一個電腦原型作為基底。
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}
}
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)
}
在這個案例中,我們看到了原型模式(Prototype Pattern)如何在節省資源和時間方面發揮其作用。通過建立一個可複製的筆電原型,我們可以更快地創建新的筆電對象,同時保證一致的基本特性。
在這個案例中表明了原型模式可以是一個非常有用的工具,特別是在需要快速並且效率地創建新物件時。然而,當使用這種模式時,我們也需要注意其潛在的限制和挑戰(可參考上一篇缺點)。
在未來的擴展中,我們可以考慮添加更多的筆電特性和選項,並探索如何更好地解決複製問題所帶來的問題,以使原型模式更加強大和靈活。