設計模式之工廠方法模式

工廠方法模式的java代碼實現

package FactoryMethod;

/**
 * Work類爲Product,它定義工廠方法所創建的對象接口
 * @author wjm
 *
 */
public interface Work {
public abstract void work();

}


package FactoryMethod;
/**
 *IworkFactory接口爲Creator,它聲明工廠方法,該方法返回一個Product類型的對象。Creator也可以定義一個工廠方法的缺省實現,它返回一個缺省的ConcreteProduct對象
 *
 *可以調用工廠方法以創建一個Product對象
 * @author wjm
 *
 */
public interface IWorkFactory {
public abstract Work getWork();
}


package FactoryMethod;
/**
 * TeacherWorkFactory類和StudentWorkFactory類均爲ConcreteCreator,它重新定義工廠方法以返回一個ConcreteProduct實例
 * @author wjm
 *
 */
public class TeacherWorkFactory implements IWorkFactory{


@Override
public Work getWork() {
return new TeacherWork();
}


}


package FactoryMethod;
/**
 * TeacherWork類和StudentWork類均爲ConcreteProduct類,即實現Product接口
 * @author wjm
 *
 */
public class TeacherWork implements Work {


@Override
public void work() {
System.out.println("老師審批作業");
}


}


package FactoryMethod;


public class StudentWorkFactory implements IWorkFactory{


@Override
public Work getWork() {
return new StudentWork();
}


}


package FactoryMethod;


public class StudentWork implements Work{


@Override
public void work() {
System.out.println("學生做作業");
}


}


package FactoryMethod;
/**
 * 工廠方法:
 * 定義一個用於創建對象的接口(Creator),讓子類決定實例化哪一個類。Factory Method使一個類的實例化延遲到其子類
 * 
 * 適用性:
 * 1.當一個類不知道它所必須創建的對象的類的時候
 * 2.當一個類希望由它的子類來指定它所創建的對象的時候
 * 3.當類將創建對象的職責委託給多個幫助子類中的某一個,並且你希望將哪一個幫助子類時代理者這一信息局部化的時候
 * @author wjm
 *
 */
public class Test {
public static void main(String[] args) {
IWorkFactory studentWorkFactory = new StudentWorkFactory();//接口指向實現類
studentWorkFactory.getWork().work();

IWorkFactory teacherWorkFactory = new TeacherWorkFactory();
teacherWorkFactory.getWork().work();
}
}

發佈了28 篇原創文章 · 獲贊 4 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章