java物件導向與設計模式(二)

來源:互聯網
上載者:User

標籤:介面   nts   調用   log   安全執行緒   設計   餓漢式   value   single   

第一式 面板模式
定義:為子系統的一組介面提供一個一致的介面,面板模式定義了一個高層介面,這一介面使得這一子系統更加容易使用。
優點:鬆散耦合 簡單易用 更好地劃分訪問的層次
缺點:不應過度使用
本質:封裝互動 簡單調用

public interface testA {        public void test();}public interface testB {        public void test();}public interface testC {        public void test();}public class concreteTestA implements testA {    @Override    public void test() {        // TODO Auto-generated method stub        System.out.println("test A");    }}public class concreteTestB implements testB {    @Override    public void test() {        // TODO Auto-generated method stub        System.out.println("test B");    }}public class concreteTestC implements testC {    @Override    public void test() {        // TODO Auto-generated method stub        System.out.println("test C");    }}public class facade {        public void test() {                testA ta = new concreteTestA();        ta.test();        testB tb = new concreteTestB();        tb.test();        testC tc = new concreteTestC();        tc.test();    }}public class user {    public static void main(String[] args) {        // TODO Auto-generated method stub        facade fc = new facade();        fc.test();    }}

第二式 適配器模式
定義:將一個類的介面轉換成客戶希望的另外一個介面。適配器模式使得原本由於介面不相容而不能一起工作的那些類可以一起工作。
優點:更好地複用性 更好地可擴充性
缺點:使用過多,會使系統更加淩亂,不容易整體進行把握
本質:轉換匹配 複用功能

public interface target {        public void request();}public class adaptee {        public void request() {                System.out.println("adaptee test");            }}public class adapter implements target {        adaptee apt = null;        public adapter(adaptee apt) {        this.apt = apt;    }    @Override    public void request() {        // TODO Auto-generated method stub        apt.request();    }}public class user {        public static void main(String[] args) {        adaptee adp = new adaptee();        target tar = new adapter(adp);        tar.request();            }}

第三式 單例模式

定義:保證一個類僅有一個執行個體,並提供一個訪問他的全域訪問點。懶漢式是時間換空間,餓漢式是空間換時間。線上程安全方面,不加同步的懶漢式是線程不安全的,而餓漢式則是安全執行緒的。單例模式的實質在於控制執行個體數目,而在叢集中使用單例模式則需要注意安全問題。推廣:緩衝的實現--空間換時間。

懶漢式:

public class singleton {        private static singleton instance = null;        private singleton() {            }        public static singleton getInstance() {                if (instance == null) {                        instance = new singleton();                    }                return instance;            }    }

餓漢式:

public class singleton {        private static singleton instance = new singleton();        private singleton() {            }        public static singleton getInstance() {                return instance;            }    }

緩衝的基本實現

public class javaCache {        private static Map<String, Object> instance = null;        public Object getInstance(String key) {                Object object = instance.get(key);                if (object == null) {                        object = key + ", value";            instance.put(key, object);                    }                return object;            }        }

枚舉類型也是實現單例模式的一種選擇。另外,還可以通過一種類級內部類的方式來實現單例模式。

public class singleton {        private static class instanceHolder {                private static singleton instance = new singleton();             }        private singleton() {            }        public static singleton getInstance() {                return instanceHolder.instance;            }    }

這裡需要解釋補充一下:類級內部類

-類級內部類就是由static修飾的成員式內部類,沒有static修飾的稱為對象式內部類。-類級內部類可以直接建立,而對象級內部類需要綁定在外部類的成員變數上。-類級內部類可以實現靜態方法,靜態方法可以用外部類的靜態方法和靜態成員變數。-類級內部類相當與外部類的成員,因此在第一次使用的時候載入。安全問題:JVM在下列情況自動實現了同步-靜態初始化器初始化資料時-訪問final欄位時-在建立線程之前建立對象時-線程可以看到它將要處理的對象時因此,利用類級內部類來實現消極式載入,通過JVM自身來保證安全執行緒則是實現的基本思路。

java物件導向與設計模式(二)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.