Java設計模式(建立型:Factory 方法模式)

來源:互聯網
上載者:User

標籤:設計模式   Factory 方法   als   運用   原創   發送訊息   介面   建立型模式   int   

(該文內容為原創,有不足之處望多多指教!)

設計模式根據目的準則可以分為三類:

  1. 建立型:creational 建立型的設計模式與對象的建立有關。

  2. 結構型:Structural 處理類和對象之間的組合。

  3. 行為型:behavioral 描述類和對象如何互動及如何分配職責。

  1. Factory 方法模式是什嗎?

站在使用者的角度,Factory 方法模式是指使用者提出想要實現的具體功能或者說是想要生產的具體的東西的要求,在通過工廠製造之後就將該東西或功能交付給使用者。使用者並不知道實現的具體過程,只是做了要求提出以及實現的結果的使用。

嚴謹來說Factory 方法模式(Factory Method)也叫原廠模式,屬於類建立型模式,工廠父類(介面)負責定義產品對象的公用介面,而子類工廠則負責建立具體的產品對象。

目的:是為了把產品的執行個體化操作延遲到子類工廠中完成,通過工廠子類來決定究竟應該執行個體化哪一個產品具體對象

有四部分組成:

1. 抽象工廠角色:具體工廠必須實現的介面或必須繼承的父類。一般由抽象類別或介面實現。

2. 具體工廠角色:是具體應用程式調用以建立對應的具體產品的對象。一般它由具體的類來實現。

3. 抽象產品角色:具體產品繼承的父類或實現的介面。一般由抽象類別或介面實現。

4. 具體產品角色:具體工廠角色所建立的對象就是它的執行個體。一般由具體類實現。

  1. 通過執行個體來區分Factory 方法模式的四部分及運用。

執行個體:boss提出發送訊息給員工

public class FactoryMethod{

   /**

    * 定義公用的介面send

    */

   interface Send {

       void send();

   }

  

   /**

    * 定義具體工廠角色,繼承公用介面

    */

   class SmsFactory implements Send{

 

       @Override

       public void send() {

          // TODO 自動產生的方法存根

          System.out.println("通過簡訊發送訊息");

       }

      

   }

  

   class MailFactory implements Send{

 

       @Override

       public void send() {

          // TODO 自動產生的方法存根

          System.out.println("通過E—mail發送訊息");

         

       }

      

   }

   /**

    * 將使用者所指定的方式與子工廠匹配,利用工廠實現

    *

    */

   class Factory{

       public void method(String a){

         

          if ("sms".equals(a)){new SmsFactory().send();}

          else if("email".equals(a)){new MailFactory().send();}

          else

              System.out.print("輸入錯誤");

         

       }

   }

   /**

    * 定義使用者

    */

   public static void main(String args[]){

       FactoryMethod temp=new FactoryMethod();

       Factory temp1=temp.new Factory();

       temp1.method("sms");

       temp1.method("email");

   }

}

輸出為:通過簡訊發送訊息

通過E—mail發送訊息

Java設計模式(建立型:Factory 方法模式)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.