欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java設(shè)計模式學(xué)習(xí)之工廠方法模式

 更新時間:2017年10月12日 10:42:53   作者:南國木棉  
這篇文章主要介紹了java設(shè)計模式學(xué)習(xí)之工廠方法模式,具有一定的參考價值,感興趣的小伙伴們可以參考一下

工廠方法模式(Factory Method):定義一個用于創(chuàng)建對象的接口,讓子類決定實例化哪一個類。工廠方法使一個類的實例化延遲到其子類。

工廠方法模式結(jié)構(gòu)圖:

項目需求,創(chuàng)建一個雷鋒工廠,大學(xué)生可以去幫助別人,志愿者也可以幫助別人做事情。

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

package FactoryMethodModel;

public class LeiFeng {

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

2:創(chuàng)建一個學(xué)雷鋒的大學(xué)生的類,繼承雷鋒類,可增加自己的功能。

package FactoryMethodModel;

/**
 * 學(xué)雷鋒的大學(xué)生
 * @author 我不是張英俊
 *
 */
public class UniversityStudent extends LeiFeng {
//里面可以增加專屬大學(xué)生的功能
}

3:創(chuàng)建一個社區(qū)志愿者的類,繼承雷鋒類。

package FactoryMethodModel;

/**
 * 學(xué)雷鋒的社區(qū)人員
 * @author 我不是張英俊
 *
 */
public class Volunteer extends LeiFeng {

}

4:創(chuàng)建一個雷鋒工廠接口。

package FactoryMethodModel;

/**雷鋒工廠的總接口。
 * @author 我不是張英俊
 *
 */
interface LeiFengFactory {
 LeiFeng CreatLenFeng();
}

5:創(chuàng)建學(xué)雷鋒的大學(xué)生的工廠。

package FactoryMethodModel;

/**
 * 學(xué)雷鋒的大學(xué)生工廠
 * @author 我不是張英俊
 *
 */
public class UniversityStudentFactory implements LeiFengFactory {

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

 
}

6:創(chuàng)建學(xué)雷鋒的志愿者工廠。

package FactoryMethodModel;

/**
 * 學(xué)雷鋒的社區(qū)制志愿者
 * @author 我不是張英俊
 *
 */
public class VolunteerFactory implements LeiFengFactory {

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

 
}

7:測試類

package FactoryMethodModel;

/**
 * 建立一個雷鋒工廠,大學(xué)生可以以雷鋒的名義起幫助別人,社區(qū)志愿者也可以。
 * 工廠化模式:定義一個用于創(chuàng)建對象的接口,讓子類決定實例化哪一個類。
 * 工廠方法使一個類的實例化延遲到其子類。
 * @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:控制臺

買米
掃地
洗衣

總結(jié):簡單工廠方法違背了開放-封閉原則,而工廠方法克服了此問題,當(dāng)需要增加新的,例如小學(xué)生學(xué)雷鋒的時候,工廠方法增加新的小學(xué)生工廠即可,然后再測試類中調(diào)用即可。

工廠方法模式還保持了封裝對象創(chuàng)建過程的有點。使得要更換對象的時候,不需要做打的改動就可以實現(xiàn),降低了客戶程序與產(chǎn)品對象的耦合,工廠方法模式是簡單工廠模式的進(jìn)一步抽象和推廣。由于使用了多態(tài)性,工廠模式保存了簡單工廠模式的有點,并且克服了缺點。但缺點是,沒增加一個產(chǎn)品,就必須增加一個工廠類,增加的額外的開發(fā)量。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 如何處理@PathVariable中的特殊字符問題

    如何處理@PathVariable中的特殊字符問題

    這篇文章主要介紹了如何處理@PathVariable中的特殊字符問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • SpringBoot @ConfigurationProperties注解的簡單使用

    SpringBoot @ConfigurationProperties注解的簡單使用

    即便現(xiàn)在簡化了配置,但是一個獨立的配置文件總是易于理解而且使人安心的。Spring在構(gòu)建完項目后,會默認(rèn)在resources文件夾下創(chuàng)建一個application.properties文件,application.yml也是一樣的效果。@ConfigurationProperties可以獲取配置文件中的數(shù)據(jù),將其注入類。
    2021-05-05
  • 詳解SpringBoot基于Dubbo和Seata的分布式事務(wù)解決方案

    詳解SpringBoot基于Dubbo和Seata的分布式事務(wù)解決方案

    這篇文章主要介紹了詳解SpringBoot基于Dubbo和Seata的分布式事務(wù)解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Java中反射的"暴破"機制(SetAccessible方法)詳解

    Java中反射的"暴破"機制(SetAccessible方法)詳解

    這篇文章主要為大家詳細(xì)介紹了Java中反射的"暴破"機制,以及如何利用這一機制實現(xiàn)訪問非公有屬性,方法,和構(gòu)造器,文中示例代碼講解詳細(xì),感興趣的可以了解一下
    2022-08-08
  • java 中sleep() 和 wait() 的對比

    java 中sleep() 和 wait() 的對比

    這篇文章主要介紹了java 中sleep() 和 wait() 的對比的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • java把excel內(nèi)容上傳到mysql實例代碼

    java把excel內(nèi)容上傳到mysql實例代碼

    這篇文章主要介紹了java把excel內(nèi)容上傳到mysql實例代碼,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • Java?泛型超詳細(xì)入門講解

    Java?泛型超詳細(xì)入門講解

    這篇文章主要介紹了Java基礎(chǔ)泛型詳情,泛型是JDK5中引入的特性,它提供了編譯時類型安全檢測機制,該機制允許在編譯時檢測到非法的類型,下面文章的詳細(xì)介紹,需要的朋友可以參考一下
    2022-04-04
  • 手把手教你SpringBoot輕松整合Minio

    手把手教你SpringBoot輕松整合Minio

    這篇文章主要介紹了手把手教你SpringBoot輕松整合Minio的方法,幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下
    2021-01-01
  • JavaScript實現(xiàn)鼠標(biāo)移動粒子跟隨效果

    JavaScript實現(xiàn)鼠標(biāo)移動粒子跟隨效果

    這篇文章主要為大家詳細(xì)介紹了JavaScript實現(xiàn)鼠標(biāo)移動粒子跟隨效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • SpringCloud?Nacos服務(wù)分級存儲模型詳解

    SpringCloud?Nacos服務(wù)分級存儲模型詳解

    Nacos服務(wù)分級存儲模型是Nacos存儲服務(wù)注冊信息和配置信息的核心模型之一,本文將對?Nacos?服務(wù)分級存儲模型進(jìn)行深入解析,感興趣的朋友一起看看吧
    2024-02-02

最新評論