Rust語言之GoF設計模式:原型模式
原型模式:一種建立模式,允許您複製現有物件而不依賴於它們的型別。
原型Prototype允許克隆物件,甚至是複雜的物件,而無需耦合到它們的特定類。
Rust 有許多型別的標準Clone實現(透過#[derive(Clone)]),這使得Prototype 易於使用且無縫。
#[derive(Clone)] struct Rectangle { width, height: u32, } let rectangle1 = Rectangle::new(10, 20); let mut rectangle2 = rectangle1.clone(); rectangle2.set_width(50); |
談到克隆或原型模式,一個繞不開的話題是:按值傳遞與按引用傳遞。
但在大多數語言中,變數不能直接持有物件/結構,建立它們的唯一方法是在堆上透過指標。這意味著對於大多數複雜的型別,你是在傳遞引用而不是複製它們。
因此,Rust的最大區別在於它允許你直接在堆疊中建立結構,並透過複製來傳遞它們。
它還引入了一個新的移動值的概念(本質上只是一個複製,但確保原始值不再被使用)。
rusts思維方式的一大好處是:從來不用擔心過深度克隆與淺層克隆的問題。
而且你基本上可以在需要的地方建立所有的深/淺克隆型別(比如當你明確希望事物被淺層複製時,使用引用或Arc/Rc)。
在Rust中,所有的東西都是透過值傳遞的,但是你仍然可以顯式地做一個引用並傳遞引用,這本質上就是透過引用傳遞。引用本身是透過值傳遞的,但被傳遞的值只是對其他東西的引用。
參考:Rust智慧指標
相關文章
- Rust語言之GoF設計模式: 模板方法模式RustGo設計模式
- Rust語言之GoF設計模式:迭代器模式RustGo設計模式
- Rust語言之GoF設計模式:工廠模式RustGo設計模式
- Rust語言之GoF設計模式:責任鏈模式RustGo設計模式
- Rust語言之GoF設計模式:中介者Mediator模式RustGo設計模式
- Rust語言之GoF設計模式:抽象工廠模式RustGo設計模式抽象
- Rust語言之GoF設計模式:Flyweight享元模式RustGo設計模式
- Rust語言之GoF設計模式:備忘錄Memento模式RustGo設計模式
- Rust語言之GoF設計模式:靜態工廠RustGo設計模式
- Rust語言之GoF設計模式: 直譯器Interpreter模式RustGo設計模式
- Rust語言之GoF設計模式:介面卡AdapterRustGo設計模式APT
- 設計模式_GoF設計模式Go
- GOF設計模式Go設計模式
- 設計模式(Java語言)- 原型模式設計模式Java原型
- Go語言實現GoF設計模式:介面卡模式Go設計模式
- 設計模式-原型模式設計模式原型
- 設計模式 —— 原型模式設計模式原型
- 設計模式(原型模式)設計模式原型
- 設計模式:原型模式設計模式原型
- 設計模式 - 原型模式設計模式原型
- 實踐GoF的23種設計模式:命令模式Go設計模式
- Java設計模式---原型模式Java設計模式原型
- 設計模式(三)——原型模式設計模式原型
- java設計模式—原型模式Java設計模式原型
- 設計模式【5】-- 原型模式設計模式原型
- Java設計模式-原型模式Java設計模式原型
- 設計模式(十六)原型模式設計模式原型
- 設計模式之原型模式設計模式原型
- 設計模式-原型模式(Prototype)設計模式原型
- 23種設計模式(八)-原型設計模式設計模式原型
- 通俗 Python 設計模式——原型設計模式Python設計模式原型
- GoF設計模式三作者15年後再談模式Go設計模式
- 設計模式之原型設計模式原型
- golang設計模式之原型模式Golang設計模式原型
- GoLang設計模式05 - 原型模式Golang設計模式原型
- 設計模式--原型模式(Prototype Pattern)設計模式原型
- go設計模式之原型模式Go設計模式原型
- 設計模式入門:原型模式設計模式原型