設計模式-建立型模式

工廠方法 

概述
    定義一個用於建立對象的接口,讓子類決定實例化哪個類。FactoryMethod使一個類的實例化延遲到其子類。
 適用性
    1.當一個類不知道它所必須建立的對象的類的時候。

    2.當一個類但願由它的子類來指定它所建立的對象的時候。

    3.當類將建立對象的職責委託給多個幫助子類中的某一個,而且你但願將哪個幫助子類是代理者這一信息局部化的時候。
			
 參與者
    1.Product
      定義工廠方法所建立的對象的接口。

    2.ConcreteProduct
      實現Product接口。

    3.Creator
      聲明工廠方法,該方法返回一個Product類型的對象。
      Creator也能夠定義一個工廠方法的缺省實現,它返回一個缺省的ConcreteProduct對象。
      能夠調用工廠方法以建立一個Product對象。

    4.ConcreteCreator
      重定義工廠方法以返回一個ConcreteProduct實例。

  5.類圖

  6.例子
    Product
1 public interface Work {
2 
3     void doWork();
4 }
View Code
ConcreteProduct
 1 public class StudentWork implements Work {
 2 
 3     public void doWork() {
 4         System.out.println("學生作做業!");
 5     }
 6 
 7 }
 8 public class TeacherWork implements Work {
 9 
10     public void doWork() {
11         System.out.println("老師審批做業!");
12     }
13 
14 }
View Code
Creator
1 public interface IWorkFactory {
2 
3     Work getWork();
4 }
View Code
ConcreteCreator
 1 public class StudentWorkFactory implements IWorkFactory {
 2 
 3     public Work getWork() {
 4         return new StudentWork();
 5     }
 6 
 7 }
 8 public class TeacherWorkFactory implements IWorkFactory {
 9 
10     public Work getWork() {
11         return new TeacherWork();
12     }
13 
14 }
View Code
Test
 1 public class Test {
 2 
 3     public static void main(String[] args) {
 4         IWorkFactory studentWorkFactory = new StudentWorkFactory();
 5         studentWorkFactory.getWork().doWork();
 6         
 7         IWorkFactory teacherWorkFactory = new TeacherWorkFactory();
 8         teacherWorkFactory.getWork().doWork();
 9     }
10 
11 }
View Code
Result
1 學生作做業!
2 老師審批做業!
View Code
相關文章
相關標籤/搜索