Java模式—簡單原廠模式

來源:互聯網
上載者:User

標籤:

簡單原廠模式:是由一個工廠對象決定建立出哪一種產品類的執行個體,簡單原廠模式是原廠模式家族中最簡單實用的模式。

目的:為建立對象提供過渡介面,以便將建立對象的具體過程屏蔽隔離起來,達到提高靈活性的目的。

它的組成:

         1) 工廠類角色:這是本模式的核心,含有一定的商業邏輯和判斷邏輯。在java中它往往由一個具體類實現。

         2) 抽象產品角色:它一般是具體產品繼承的父類或者實現的介面。在java中由介面或者抽象類別來實現。

         3) 具體產品角色:工廠類所建立的對象就是此角色的執行個體。在java中由一個具體類實現。

 

 

以一個工廠生產電視和手機為例進行解釋:

 

首先定義分別定義兩個類代表電視和手機,並且都實現了work介面

 1 interface work{ 2     public void working(); 3 } 4 class Phone implements work{ 5  6     @Override 7     public void working() { 8         System.out.println("生產手機"); 9     }10     11 }12 class Tv implements work{13 14     @Override15     public void working() {16         System.out.println("生產電視");17     }18     19 }

 

接著如果想使用這兩個類,可以用普通建立對象的方法

 

 1 public class Test10 { 2  3     public static void main(String[] args) { 4         Phone phone=new Phone(); 5         phone.working(); 6          7         Tv tv=new Tv(); 8         tv.working(); 9     }10 11 }

 

      這樣使用的不好處就是,如果Phone類和TV類一旦改變,就得改變上述代碼,可以說類Test10依賴於Phone類和TV類,稱這種依賴為耦合:使用者直接使用了具體類,表示當前類依賴該具體類。這樣當這個具體類發生變化,使用者將受到影響。

為了降低這種影響,引入原廠模式:

 

增加一個工廠類

 1 class Factory{ 2     public static Work getWork(String product){ 3         if("phone".equals(product)){ 4             return new Phone(); 5         }else if("tv".equals(product)){ 6             return new Tv(); 7         } 8         return null; 9     }10 }

這樣Test10類的代碼就可以為:

 1 public class Test10 { 2  3     public static void main(String[] args) { 4         //依賴介面 5         Work work=Factory.getWork("tv"); 6         if(work!=null){ 7             work.working(); 8         } 9     }10 11 }

這樣它由依賴一個具體類轉化為依賴介面,降低了耦合,體現了面向介面編程的思想。

這樣具體類的變化不會影響到它。

這樣寫代碼雖說和上述結果一樣,但是可擴充性增強,維護性更強。

 

 

 

 

 

 

 

 

————————————————————————歡迎各位博友指出不足之處,多多交流。

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.