首頁 >Java >java教程 >Java之工廠方法模式學習

Java之工廠方法模式學習

黄舟
黄舟原創
2017-10-13 10:25:051582瀏覽

這篇文章主要介紹了java設計模式學習之工廠方法模式,具有一定的參考價值,有興趣的小夥伴們可以參考一下

工廠方法模式(Factory Method):定義一個用於建立物件的接口,讓子類別決定實例化哪一個類別。工廠方法使一個類別的實例化延遲到其子類別。

工廠方法模式結構圖:

專案需求,創造一個雷鋒工廠,大學生可以去幫助別人,志工也可以幫助別人做事情。

1:創建一個雷鋒類,具有幫助別人掃地,洗衣,買米的功能。


package FactoryMethodModel;

public class LeiFeng {

 public void Sweep(){
  System.out.println("扫地");
 }
 
 public void Wash(){
  System.out.println("洗衣");
 }
 
 public void BuyRice(){
  System.out.println("买米");
 }
}

2:創建一個學雷鋒的大學生的類,繼承雷鋒類,可增加自己的功能。


package FactoryMethodModel;

/**
 * 学雷锋的大学生
 * @author 我不是张英俊
 *
 */
public class UniversityStudent extends LeiFeng {
//里面可以增加专属大学生的功能
}

3:創建一個社區志工的類,繼承雷鋒類。


package FactoryMethodModel;

/**
 * 学雷锋的社区人员
 * @author 我不是张英俊
 *
 */
public class Volunteer extends LeiFeng {

}

4:建立一個雷鋒工廠介面。


package FactoryMethodModel;

/**雷锋工厂的总接口。
 * @author 我不是张英俊
 *
 */
interface LeiFengFactory {
 LeiFeng CreatLenFeng();
}

5:創造學雷鋒的大學生的工廠。


package FactoryMethodModel;

/**
 * 学雷锋的大学生工厂
 * @author 我不是张英俊
 *
 */
public class UniversityStudentFactory implements LeiFengFactory {

 @Override
 public LeiFeng CreatLenFeng() {
  return new UniversityStudent();
 }

 
}

6:創造學雷鋒的志工工廠。


package FactoryMethodModel;

/**
 * 学雷锋的社区制志愿者
 * @author 我不是张英俊
 *
 */
public class VolunteerFactory implements LeiFengFactory {

 @Override
 public LeiFeng CreatLenFeng() {
 // TODO Auto-generated method stub
 return new Volunteer();
 }

 
}

7:測試類別


#
package FactoryMethodModel;

/**
 * 建立一个雷锋工厂,大学生可以以雷锋的名义起帮助别人,社区志愿者也可以。
 * 工厂化模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。
 * 工厂方法使一个类的实例化延迟到其子类。
 * @author 我不是张英俊
 *
 */
public class Test {

 public static void main(String[] args) {
 
 LeiFengFactory factory=new UniversityStudentFactory();
 LeiFeng student =factory.CreatLenFeng();
 
 student.BuyRice();
 student.Sweep();
 student.Wash();
 }

}

8:控制台

買米
掃地
洗衣

總結:簡單工廠方法違背了開放-封閉原則,而工廠方法克服了此問題,當需要增加新的,例如小學生學雷鋒的時候,工廠方法增加新的小學生工廠即可,然後再測試類別中呼叫即可。

工廠方法模式也保持了封裝物件建立過程的有點。使得要更換物件的時候,不需要做打的改動就可以實現,降低了客戶程序與產品物件的耦合,工廠方法模式是簡單工廠模式的進一步抽象與推廣。由於使用了多態性,工廠模式保存了簡單工廠模式的有點,並且克服了缺點。但缺點是,沒增加一個產品,就必須增加一個工廠類,增加的額外的開發量。

以上是Java之工廠方法模式學習的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn