国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

JAVA設計模式《二》

2019-11-14 23:24:27
字體:
來源:轉載
供稿:網友
java設計模式《二》

  上一篇為大家介紹了一下設計模式中的責任鏈模式,本篇為大家介紹一下關于設計模式中的單例模式與模板方法模式。單例模式的作用在于,保證應用中某個實例有且只有一個,單例模式又被分為:飽漢模式與餓漢模式,兩者的區別在于餓漢模式沒有顯式給出對象的實例話。下面我們就一起先了解一下單例模式的中的飽漢模式和餓漢模式。

 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中模式的單例模式和模板方法模式就為大家介紹完畢。下一篇:適配器模式與工廠方法模式

  


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 东阿县| 仙游县| 隆化县| 宿州市| 睢宁县| 会泽县| 西林县| 沈丘县| 专栏| 许昌县| 丰原市| 冀州市| 左贡县| 江达县| 锡林浩特市| 太和县| 诸暨市| 浑源县| 贵州省| 石台县| 北川| 汶上县| 额尔古纳市| 金山区| 商洛市| 固安县| 交城县| 灌南县| 行唐县| 清流县| 大洼县| 柏乡县| 故城县| 新源县| 板桥市| 简阳市| 平遥县| 皮山县| 城步| 文安县| 塔城市|