標籤:設計模式 Factory 方法 als 運用 原創 發送訊息 介面 建立型模式 int
(該文內容為原創,有不足之處望多多指教!)
設計模式根據目的準則可以分為三類:
建立型:creational 建立型的設計模式與對象的建立有關。
結構型:Structural 處理類和對象之間的組合。
行為型:behavioral 描述類和對象如何互動及如何分配職責。
Factory 方法模式是什嗎?
站在使用者的角度,Factory 方法模式是指使用者提出想要實現的具體功能或者說是想要生產的具體的東西的要求,在通過工廠製造之後就將該東西或功能交付給使用者。使用者並不知道實現的具體過程,只是做了要求提出以及實現的結果的使用。
嚴謹來說Factory 方法模式(Factory Method)也叫原廠模式,屬於類建立型模式,工廠父類(介面)負責定義產品對象的公用介面,而子類工廠則負責建立具體的產品對象。
目的:是為了把產品的執行個體化操作延遲到子類工廠中完成,通過工廠子類來決定究竟應該執行個體化哪一個產品具體對象
有四部分組成:
1. 抽象工廠角色:具體工廠必須實現的介面或必須繼承的父類。一般由抽象類別或介面實現。
2. 具體工廠角色:是具體應用程式調用以建立對應的具體產品的對象。一般它由具體的類來實現。
3. 抽象產品角色:具體產品繼承的父類或實現的介面。一般由抽象類別或介面實現。
4. 具體產品角色:具體工廠角色所建立的對象就是它的執行個體。一般由具體類實現。
通過執行個體來區分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 方法模式)