發表文章

目前顯示的是有「Prototype Pattern」標籤的文章

設計模式 - 原型模式 (Creational Patterns - Prototype Pattern)

原型模式的使用時機 當今天想要複製一個模型裡面的屬性時 並且複製的是原本物件的全部屬性 當今天new可能會造成危害時 設計方法 確保物件有clone方法 可以克制化或是繼承java.lang的Cloneable介面,直接使用Java物件之母的Object.clone功能 使用Object.clone功能必須以super的方式調度父類別 設計原型模式中心,可以進行調控(可能是工廠模式) 客戶端使用原型模式中心取出的物件,取代new出物件 範例 英雄訓練營可以訓練並且可以複製使用者覺得優秀的英雄,在此範例因為屬性過少所以感覺不到prototype的威力,當今天屬性變多後,使用prototype模式就不用慢慢地set屬性了。 class Hero implements Cloneable { //Prototype private String weapon; public String getWeapon() { return weapon; } public void setWeapon(String weapon) { this.weapon = weapon; } @Override public Object clone() throws CloneNotSupportedException { return super.clone(); } } class HeroCam { // Prototype registry public Hero makeHero() { return new Hero(); } public Hero cloneHero(Hero hero) throws CloneNotSupportedException { return (Hero) hero.clone(); } } public class Prototype { public static void main(String[] args) { HeroCam heroCam = new Hero...