工廠方法模式的用意是定義乙個建立產品物件的工廠介面,將實際建立工作推遲到子類中。先寫乙個pizza介面,那麼乙個香噴噴的pizza要做好就需要經過如下四個步驟!工廠模式完全負責設計原則,降低了物件之間的耦合度。很明顯工廠方法模式依賴於抽象的架構,將例項化的任務交由子類去完成,同時也有非常好的拓展性。
public inte***ce pizza
兩種pizza供君挑選!
pizza a~
public class apizza implements pizza
@override
public void bake() {}
@override
public void cut() {}
@override
public void box()
}
pizza b~
public class bpizza implements pizza
@override
public void bake() {}
@override
public void cut() {}
@override
public void box()
}
然後我們要有工廠來生產pizza,即建立出pizza的例項!
public class pizzafactory else if(type == "b")
return pizza; }
}
pizzastore可以開始營業啦!
public class pizzastore
//使用者點餐就交給工廠去製作!
public pizza orderpizza(string type)
//測試一下!
public static void main(string args)
}
懶漢式
把自己的構造方法設定為私有的,不讓別人訪問你的例項,同時提供乙個static方法給別人獲取你的例項。
public class single1
public static single1 getinstance()
return single1;
}}
餓漢式
定義了乙個靜態的final的例項,並且直接new了乙個物件,這樣就會導致single2 類在載入位元組碼到虛擬機器的時候就會例項化這個例項,當呼叫getinstance方法的時候,就會直接返回,不必做任何判斷。這樣做的好處是**量明顯減少了,壞處是,在沒有使用該單例的時候,該單例卻被載入了,同時如果該單例很大的話,將會浪費很多的記憶體。
public class single2
public static single2 getinstance()
}
同步懶漢式
使用synchronized關鍵字,相當於每個想要進入該方法的獲取例項的執行緒都要阻塞,這對效能的影響是巨大的。其實只需要在例項第一次初始化的時候同步就足夠了。
public class single3
public synchronized static single3 getinstance()
return single3;
}}
雙重檢驗鎖
執行緒第一次進入會阻塞,但相較於同步懶漢式,已經有許多進步了。
public class single4
public static single4 getinstance()
}} return single4;
}}
懶載入內部類
public class single5
private single5 (){}
public static final single5 getinstance()
}
列舉型別
public enum single6
}
設計模式 單例模式 工廠模式
1.單例設計模式 乙個類中只能有乙個物件 分為 懶漢單例模式和餓漢單例模式 懶漢單例模式 1.私有化構造器 2.宣告本類引用的型別,不要去指向物件 3.提供乙個公共靜態的方法,為外部提供物件,先判斷引用型別是否為物件,如果不是,則引用指 向乙個new 類名 並返回 如果有就返回這個引用 public...
設計模式(工廠模式,單例模式)
設計模式設計模式 gof gang of four 設計模式是指前人在長期的開發經驗中 總結出來的一套用於解決特定問題的套路 設計模式原則 1 工廠模式 示例 工廠模式思想 靜態工廠模式 author whd public abstract class carclass benz extends c...
設計模式 工廠模式和單例模式
在平常實用類的時候,往往要進行類功能的擴充套件,如果直接在裡面進行擴充套件,有可能會對類裡面的其他功能產生影響,所以在擴充套件功能的時候就要重新寫類,這就要採用繼承的方式,如 1 class yunsuan 2 8 9class jia extends yunsuan 造乙個加的子類繼承父類 10 ...