常用的設計模式

2021-07-09 06:35:56 字數 4435 閱讀 4979

1、單例設計模式  

單例設計模式主要是用於該類在專案中只能乙個例項,並對外提供獲取這乙個例項的方法

單例設計模式有餓漢式和飽漢式,

其中餓漢式單例設計模式的特點是:執行緒安全,效率低

飽漢式單例設計模式的特點是:效率高,執行緒不安全

//餓漢式單例設計模式

private singledemo() {}

private static singledemo singledemo = new singledemo();

public static singledemo getinstance()

//飽漢式單例設計模式

private singledemo() {}

private static singledemo singledemo = null;

public static singledemo getinstance()

return singledemo;

}

綜合優缺點後,優化後的單例設計模式**如下:

//優化後的單例設計模式

private singledemo() {}

private static singledemo singledemo = null;

public static singledemo getinstance() }}

return singledemo;

}

2、工廠設計模式

工廠設計模式主要用於建立物件,一般都是通過new出乙個物件,當時如果當物件比較複雜時,可以通過工廠實現new物件,而呼叫物件時通過工廠提供的方式直接使用已經new出來的物件

簡單區分為兩種,一種是工廠方法模式,一種是抽象工廠模式

工廠方法模式

public inte***ce animal
public class cat implements animal 

@override

public void run()

}

public class dog implements animal 

@override

public void run()

}

工廠建立物件

public class animalfactory 

if(classname.equals("dog"))

return animal;

}}

直接呼叫工廠的物件

animal cat = animalfactory.getinstance("cat");

cat.run();

cat.say();

animal dog = animalfactory.getinstance("dog");

dog.say();

dog.run();

抽象工廠模式    用於建立多個

public inte***ce factory

public class beijingfactory implements factory 

if (classname.equals("dog"))

return animal;

}@override

public fruit createfruit(string classname)

if (classname.equals("banana"))

return fruit;

}}

animal mcat = new beijingfactory().createanimal("cat");

mcat.run();

3、**模式設計模式

**主要就是把物件傳遞到**物件呢,**物件操作具體的**業務

public class proxy implements animal 

public void check()

@override

public void say()

@override

public void run()

}

animal animal = null;

animal = new proxy(new dog());

animal.run();

4、介面卡模式

主要是用於new物件時,減少冗餘的方法

inte***ce window

// 定義抽象類實現介面,在此類中覆寫方法,但是所有的方法體為空  

abstract class windowadapter implements window ;// 視窗開啟

public void close() ;// 視窗關閉

public void iconified() ;// 視窗最小化

public void deiconified() ;// 視窗恢復

public void activated() ;// 窗**動

}

// 子類繼承windowadapter抽象類,選擇性實現需要的方法  

class windowimpl extends windowadapter

public void close()

}

5、觀察者設計模式

主要用於當乙個物件的屬性值改變時,那麼所有的觀察者都可以收到屬性改變的值

class house extends observable    

public float getprice()

public house(float price)

public string tostring()

}

class housepriceobserver implements observer    

@override

public void update(observable o, object arg)

}

}

house h = new house(1000000);   

housepriceobserver hpo1 = new housepriceobserver("購房者a");

housepriceobserver hpo2 = new housepriceobserver("購房者b");

housepriceobserver hpo3 = new housepriceobserver("購房者c");

h.addobserver(hpo1);// 給房子註冊觀察者

h.addobserver(hpo2);// 給房子註冊觀察者

h.addobserver(hpo3);// 給房子註冊觀察者

system.out.println(h);// 輸出房子**

// 修改房子**,會觸發update(observable o, object arg)方法通知購房者新的房價資訊

h.setprice(2222222);//

6、裝飾者模式

/被裝飾者抽象類  

public abstract class beverage

public abstract double cost();

}

//被裝飾者具體類  

public class houseblend extends beverage

@override

public double cost()

}

//裝飾者抽象類  

public abstract class condimentdecorator extends beverage

//裝飾者的具體類  

public class mocha extends condimentdecorator

@override

public string getdescription()

@override

public double cost()

}

設計模式 常用的設計模式介紹

簡單點說,就是乙個應用程式中,某個類的例項物件只有乙個,你沒有辦法去new,因為構造器是被private修飾的,一般通過getinstance 的方法來獲取它們的例項。getinstance 的返回值是乙個物件的引用,並不是乙個新的例項 懶漢式 執行緒不安全 public class singlet...

常用的設計模式

閒來無聊學習學習設計模式,設計模式太多了,好像有20多種,其實在平時工作中沒有用到很多,有的在不經意之間就已經使用了,現在總結一些平時使用比較多的設計模式。概念 1.可以來劃分命名空間,從而清除全域性變數所帶來的危險。2.利用分支技術來來封裝瀏覽器之間的差異。3.可以把 組織的更為一體,便於閱讀和維...

常用的設計模式

tip 本片部落格主要講解android開發中設計到的設計模式。單例模式 單例模式是設計模式中使用最簡單的模式,也是最常用的模式,該模式主要用途是用於使全域性只能建立乙個例項,並對外提供可呼叫的方法和常量。比如一些util helper類。建立者 lucas 建立時間 2018 3 9 0009 1...