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 animalpublic 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...