1. 程式人生 > >"工廠模式"-之Java,Android面試必問設計模式(1/9)

"工廠模式"-之Java,Android面試必問設計模式(1/9)

1.工廠方法模式:分三種

這是我給大家介紹的8個面試必問的設計模式的第一類:工廠模式.學完這8類必會的那麼面試就不會有什麼問題了,其餘的無非都是多型的演變.好的開始講解第一類:

  • 1.普通工廠

        建立一個工廠類,對"實現同一介面"的一些類進行例項的建立.
    
  • 2.多個工廠

        在普通的基礎上,如果傳遞的字串出錯,就不能建立,並提供多個工廠方法,分別建立物件.
    
  • 3.靜態工廠方法

        將多個工廠的方法改成"靜態",不用建立例項,直接呼叫即可
    

1.普通工廠:

    /**
     * 普通工廠類:
     * 1.一個介面
     * 2.多個具體實現了介面的"類"
     * 3.建立一個傳送資訊"工廠類"
     *      包含一個統一的方法:對實現了"同一介面的類",進行例項的建立.
     */
//傳送介面 interface Send { public void send(); } //傳送簡訊類,實現傳送類 class SendMessage implements Send { @Override public void send() { System.out.println("傳送了 簡訊..."); } } //傳送郵件類,實現傳送類 class SendEmail implements Send { @Override public
void send() { System.out.println("傳送了 郵件..."); } } //傳送工廠類 class SendFactory { public Send method(String type) { //根據傳值的不同進行判斷,得到不同的物件. if ("message".equals(type)) { return new SendMessage(); } else if
("email".equals(type)) { return new SendEmail(); } else { System.out.println("輸入型別不正確"); return null; } } } //測試類: public class Test { public static void main(String[] args) { SendFactory sf = new SendFactory(); final Send email = sf.method("email"); email.send(); final Send message = sf.method("message"); message.send(); final Send phone = sf.method("phone"); if (phone != null) { phone.send(); } } }

列印結果:

傳送了 郵件...
傳送了 簡訊...
輸入型別不正確

2.多個工廠模式:

    /**
     * 多個工廠類:
     * 1.(Ps)在普通的基礎上加上升級:每個例項"都建立"對應的方法
     * 2.後續直接呼叫對應方法即可,防止了輸入字串出錯
     */
    public class SendFactory {
        //指指定的多個方法,防止出錯
        public Send sendEmailmethod() {
            return new SendEmail();
        }

        public Send sendMessageMethos() {
            return new SendMessage();
        }
    }
//測試類:  
public class Test {
    public static void main(String[] args) {
        SendFactory sf = new SendFactory();
        //因為有選擇了,所以不會出錯
        final Send email = sf.sendEmailmethod();
        email.send();
        final Send message = sf.sendMessageMethos();
        message.send();
    }
}

列印結果:

傳送了 郵件...
傳送了 簡訊...

3.靜態工廠模式:

    /**
     * 就改成個靜態即可.
     * (Ps+)在多個工廠的基礎上,把工廠的中的方法改成靜態,那麼等下就不用new 工廠類了
     */
    //傳送工廠類
    public class SendFactory {
        //指指定的多個方法,防止出錯
        //只需把這裡改成static 方法即可
        public static Send sendEmailmethod() {
            return new SendEmail();
        }

        public static Send sendMessageMethos() {
            return new SendMessage();
        }
    }
//測試類:
public class Test {
    public static void main(String[] args) {
        //因為是靜態方法,所以直接呼叫即可,不用new 工廠類
        Send email = SendFactory.sendEmailmethod();
        email.send();
        final Send message = SendFactory.sendMessageMethos();
        email.send();
    }
}

列印結果:

傳送了 郵件...
傳送了 簡訊...

相關推薦

"工廠模式"-Java,Android面試設計模式(1/9)

1.工廠方法模式:分三種 這是我給大家介紹的8個面試必問的設計模式的第一類:工廠模式.學完這8類必會的那麼面試就不會有什麼問題了,其餘的無非都是多型的演變.好的開始講解第一類: 1.普通工

"裝飾模式"-Java,Android面試設計模式(6/9)

下面我們開始講到面試必問的第六種設計模式:裝飾模式 “裝飾模式** 概念: 為了給一個物件增加功能:一個介面,一個具體類實現了方法,為了拓展方法,增加一個”裝飾類”繼承介面,(裝飾類裡宣告

"單例模式"-Java,Android面試設計模式(3/9)

單例模式 下面給大家分享面試必問8大設計模式中的第三種:單例模式 大家如果被面試官問到單例模式,只需回答下面的內容,並分析其中的幾個關鍵點即可. 單例模式分兩類: 1.開發使用餓漢式 2.但是懶漢式是必須會寫的 要求解釋未加鎖版的缺陷,和解決

"Java基礎"-Java,Android面試部分

關於文章內容: 大家好,今天我打算整理並總結關於JAVA,Android的相關方面的技能點,主要分為: 1.java基礎板塊; 3.andoroid基礎板塊; 4.android高階板塊. 如果大家認真掌握好,那麼你就相當於有了兩年以上的開發經

面試設計模式?不要怕看這裡:工廠模式

上一篇中,我介紹了單例模式的關鍵點,掌握了這些關鍵點,面試被問到單例肯定就沒太大問題了,我們先來回顧一下: 單例設計模式的關鍵點 一.私有建構函式 二.宣告靜態單例物件 三.構造單例物件之前要加鎖(lock一個靜態的object物件,某些語言可以宣告同步執行,其實是

"Fragment"-Android面試"精華技能點"彙總

Fragment技能點彙總總結: 目錄: 一.Fragment跟Activity如何傳值? 一.getActivity() 1.從Fragment獲取Ativity的資訊 2.就可以呼叫Ativity的方法了 二.setArgum

Java高階面試—Dubbo面試題彙總

1、預設使用的是什麼通訊框架,還有別的選擇嗎?    2、服務呼叫是阻塞的嗎?    3、一般使用什麼註冊中心?還有別的選擇嗎?    4、預設使用什麼序列化框架,你知道的還有哪些?    5、服務提供者能實現失效踢出是什麼原理?    6、服務上線怎麼不影響舊版本?    

Java基礎面試

1.&與&&區別?&和&&都是邏輯運算子,都是判斷兩邊同時真則為真,否則為假;但是&&當第一個條件不成之後,後面的條件都不執行了,而&am

"Android Touch事件分發機制"-Android面試"精華技能點"彙總

目錄: 一.事件分發中的 onTouch 和 onTouchEvent 有什麼區別,又該如何使用? 1.onTouch方法: 是View的 OnTouchListener介面中定義的方法。 當一個View綁定了OnTouchLister後,當有

"Android 螢幕適配"-Android面試"精華技能點"彙總

目錄: 1. 螢幕適配的方式都有哪些? 1.1 方式之-dp 1.1.1 名詞解釋: 解析度 480*800,1280*720,表示畫素點的總和 px(pix)-畫素 是螢幕裡的最小單元 dpi-畫素密度 每英寸螢幕具有的

"Intent"-Android面試"精華技能點"彙總

Intent: 一.intent傳輸資料時,可以傳遞哪些型別的資料? (非常多) 1.java的常見資料型別和String和他們的陣列形式 2.還有bundle 3.還有實現了Serializable和Parcelable介面的物件 二

"Android中的動畫"-Android面試"精華技能點"彙總

一.Android中的動畫有哪幾類,它們的特點和區別是什麼? 根據谷歌官方文件,動畫分為3種: 1.幀動畫/影象動畫(Drawable Animation) 1.xml方式->配置一組圖片,動態播放 2.補間動畫(View A

面試設計模式?不要怕看這裡:單例模式

設計模式是老生常談的問題,有人工作多年卻對設計模式一竅不通,但是更多的人是懂一點點,但是不求甚解。其實這樣不好,暫且不說在工作中的應用,即便是在面試時,被面試官問到設計模式時一臉懵逼,是非常尷尬的事情。本文不廢話,不談大篇理論教學,只針對面試,給出設計模式的關鍵點,

面試設計模式?不要怕看這裡:觀察者模式

本系列: 上一篇中,我給大家詳細講解了一下工廠模式以及面試中可能會被問到的關鍵點,我們先來溫習溫習。 工廠模式的關鍵點: 一、工廠模式分為簡單工廠,工廠和抽象工廠 二、三種工廠的實現是越來越複雜的 三、簡單工廠通過構造時傳入的標識來生產產品,不同產品都在同一個工廠

設計模式禪》-2.單例設計模式

單例設計模式 定義: 確保某一個類只有一個例項,而且自行例項化並向整個系統提供這個例項 通用程式碼: public class Singleton{ private static Singleton singleton = new Singleton(); //私

設計模式Java中的23種設計模式與7大原則

Java中的23種設計模式與7大原則建立型模式 5抽象工廠模式(Abstract factory pattern): 提供一個介面, 用於建立相關或依賴物件的家族, 而不需要指定具體類.生成器模式(Bu

Android中的Activity四種啟動模式(launchMode)(面試)

android:launchMode standard 預設標準的啟動模式,每次startActivity(Intent intent)請求都建立一個新的activity實 例,適用於大多數場景。 singleTop 單一頂部,如果要啟動的activity在任務棧的頂部已經存在,不會建立新的例項,而是呼叫 o

/Android面試---講一下你對Activity的瞭解(面試的).

這篇文章會涉及到以下幾個內容 一 Activity的生命週期二 讓Activity變成一個視窗:Activity屬性設定三 你後臺的Activity被系統 回收怎麼辦:onSaveInstanceState四 呼叫與被呼叫:我們的通訊使者 - Intent 一 Activi

Java面試Hashmap底層實現原理(JDK1.7)

# 1. 前言 Hashmap可以說是Java面試必問的,一般的面試題會問: * Hashmap有哪些特性? * Hashmap底層實現原理(get\put\resize) * Hashmap怎麼解決hash衝突? * Hashmap是執行緒安全的嗎? * ... 今天就從原始碼角度一探究竟。筆者的原始

Java面試Hashmap底層實現原理(JDK1.8)

# 1. 前言 上一篇從原始碼方面瞭解了JDK1.7中Hashmap的實現原理,可以看到其原始碼相對還是比較簡單的。本篇筆者和大家一起學習下JDK1.8下Hashmap的實現。JDK1.8中對Hashmap做了以下改動。 - 預設初始化容量=0 - 引入紅黑樹,優化資料結構 - 將連結串列頭插法改為尾插法