上一篇為大家介紹了一下設計模式中的責任鏈模式,本篇為大家介紹一下關于設計模式中的單例模式與模板方法模式。單例模式的作用在于,保證應用中某個實例有且只有一個,單例模式又被分為:飽漢模式與餓漢模式,兩者的區別在于餓漢模式沒有顯式給出對象的實例話。下面我們就一起先了解一下單例模式的中的飽漢模式和餓漢模式。
1、飽漢模式:
在我們創建對象時一般JAVA會默認為我們提供一個默認的構造方法,單例模式既然要保證程序中某個對象只有一個實例化,所以我們要把我們的構造方法定義為:PRivate私有的,那我們在程序中如何獲得該對象呢?這是我們對外提供一個獲得該對象實例的方法,當外部需要獲得實例對象時,通過類調用該方法獲得。
/* * 單例模式---飽漢模式 * 保證整個應用程序中某個實例有且只能有一個 */public class One { //第一步定義一個無參構造方法,私有化,不允許外部直接創建對象 private One(){ } //定義一個One對象 private static One one = new One(); //提供一個外部調用對象的方法,通過static將該方法定義為全局方法 public static One getOne(){ return one; } }2、餓漢模式:
餓漢模式的思想和飽漢模式基本相同,只不過餓漢模式沒有提供顯式的對象實例。
/* * 單例模式---懶 漢模式 * 單例模式的作用:保證整個應用程序中某個實例有且只能有一個 */public class Two { //第一步定義一個無參構造方法,私有化,不允許外部直接創建對象 private Two(){ } //聲明一個Two對象 private static Two two; //提供一個外部調用對象的方法,通過static將該方法定義為全局方法 public static Two getTwo(){ if(two==null){ two = new Two(); } return two; }}3、測試:
public class Test { /** * @param 模式測試 */ public static void main(String[] args) { //飽漢模式 One one1 = One.getOne(); One one2 = One.getOne(); if(one1==one2){ System.out.println("兩個對象一致"); }else{ System.out.println("兩個對象不一致"); } //餓漢模式 Two two1 = Two.getTwo(); Two two2 = Two.getTwo(); if(two1==two2){ System.out.println("兩個對象一致"); }else{ System.out.println("兩個對象不一致"); } }}結果:

下面我們一起來學習一下,關于模板方法模式的知識,模板方法模式就如同我們在設計建筑時,我們在保持傳統設計工藝的基礎上,對一些地方進行設計創新,最終達到我們理想的設計效果。
如何為大家介紹呢?下面我們就以一個飲料機為原型為大家介紹一下模板方法模式。假定我們的飲料機可以出兩種飲料:一種咖啡,另一中綠茶,這兩種飲料都有提神的功效,是程序猿的必備。哈哈,這是你拿這杯子來到飲料機前,點擊我要一杯咖啡,這是飲料機就為您提供一杯咖啡;當你點擊我要一杯綠茶時,飲料機就為我們提供了一杯綠茶。這是怎么一回事呢?下面我們用代碼實現一下:
1、創建一個飲料機類:
/* * 模板方法模式 */public abstract class Robot { public void ZhuShui(){ System.out.println("把水煮沸"); } public abstract void Chong(); public void DaoShui(){ System.out.println("把飲料倒入杯子中"); } public abstract void Add();}2、創建一個咖啡機類:
public class Coffer extends Robot { public void Add() { System.out.println("加牛奶"); } public void Chong() { System.out.println("沖咖啡"); }}3、創建一個綠茶機類:
public class Tea extends Robot { public void Add() { System.out.println("加檸檬"); } public void Chong() { System.out.println("沖泡茶葉"); }}4、測試代碼:
public class Test { /** * @param 模板方法模式測試 */ public static void main(String[] args) { Robot robot1 = new Coffer(); robot1.ZhuShui(); robot1.Chong(); robot1.DaoShui(); robot1.Add(); System.out.println("**********************"); Robot robot2 = new Tea(); robot2.ZhuShui(); robot2.Chong(); robot2.DaoShui(); robot2.Add(); }}測試結果:

Ok到這里關于JAVA中模式的單例模式和模板方法模式就為大家介紹完畢。下一篇:適配器模式與工廠方法模式
新聞熱點
疑難解答