標籤:設計模式 單例模式 餓漢模式-懶漢模式 原廠模式
單例模式
/* * 單例模式 * 應用場合:有些對象只需要一個,此時可以使用單例模式 * 作用:保證整個應用中某個執行個體有且只有一個 * 類型:餓漢模式、懶漢模式 */public class Test04 { // 1.將構造方式私人化,不允許外界直接建立對象 private Test04() { } // 2.建立類的唯一對象,使用private static修飾 private static Test04 instance=new Test04(); // 3.提供一個用於擷取唯一執行個體的方法,使用public static修飾 public static Test04 getInstance(){ return instance; }}
懶漢模式
/* * 懶漢模式 * 區別: * 1.餓漢模式的特點,在類載入時會建立類的唯一執行個體,導致類載入比較慢,但運行時擷取對象的速度較快,安全執行緒 * 2.懶漢模式的特點,在第一次擷取執行個體時會建立類的唯一執行個體,導致第一次擷取時較慢,但類載入比較快,線程不安全 * */public class Test05 { // 1.將構造方法私人化 private Test05() { } // 2.聲明類的唯一執行個體,但並未執行個體化 private static Test05 instance; // 3.提供一個用於擷取唯一執行個體的靜態方法 public static Test05 getInstance() { if(instance==null){ instance=new Test05();//判斷如果為空白,則建立一個唯一的執行個體 } return instance; }}
原廠模式
/* * 原廠模式Factory Method * 簡單原廠模式 * 定義:建立一個工廠類,對實現了同一個介面的多個類進行執行個體化對象的操作 */public class Test06 { public static void main(String[] args) { Factory factory=new Factory(); Moveable m1=factory.product("plane"); Moveable m2=factory.product("bus"); Moveable m3=factory.product("bike"); m2.move(); }}interface Moveable { public void move();}class Plane implements Moveable { @Override public void move() { System.out.println("馬航死亡航班。。。"); }}class Bus implements Moveable { @Override public void move() { System.out.println("昌河校車。。。"); }}class Bike implements Moveable { @Override public void move() { System.out.println("捷安特單車"); }}/* * 生產產品的工廠類 */class Factory { public Moveable product(String need) { if (need.equals("plane")) { return new Plane(); } else if (need.equals("bus")) { return new Bus(); } else { return new Bike(); } }}
JAVA學習筆記(五十七)- 常用設計模式