日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

工厂模式的理解

發布時間:2025/3/15 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 工厂模式的理解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

工廠模式的定義

工廠模式叫虛擬構造,多態工廠,工廠模式就是專門負責將大量有共同接口的類實例化,而且不必事先知道每次是要實例化哪一個類的模式。它定義一個用于創建對象的接口,由子類決定實例化哪一個類

用UML的類圖如下;看附件

工廠方法創建對象的接口,工廠方法把實例推遲到子類

為了更好的理解工廠模式,我舉一個例子,在一個在一個醫院里有不同的科室,創建一個醫院接口,實現兩個不同的科室實現醫院的接口,方法是創建新的對象,就是創建不同的醫生對象,然后再創建一個醫生接口,實現不一樣的醫生,在工廠中創建,然后就可以降低對象和對象之間的耦合度,提高了系統的靈活性??梢酝ㄟ^工廠方法調用不同醫生的調度。

工廠模式的優勢

應用程序的實例對象都放在一個地方來進行創建,利于對對象的管理和規劃,對傳值的操作有統一的規劃

在不修改應用程序其他類和參數的情況下類和對象,并對應用程序的持久性有更好的維護和升級

工廠模式的使用場景

1.一個系統應當不依賴于產品類實例被創立,就是實例的改變并不影響其他實例的使用。?
2.這個系統的產品很多的時候,不知道該調用哪一個實例。應該考慮使用工廠模式?
3.同屬于一個實例,應該考慮不同的影響,從而減少依賴?
4.不同的產品以一系列的接口的面貌出現,從而使系統不依賴于接口實現,從而很好地去恪守接口隔離的原則。

例子:

把三好學生的描述作為例子

首先創建班級接口

public interface IClassFactory {

IStudent CreateStudent();


}

然后創建實現班級接口類

/**

?*?

?* @author lxh

?*

?*/


1.public class IClassOneFactory implements IClassFactory {



@Override

public IStudent CreateStudent() {

// TODO Auto-generated method stub

return new Student1();

}


}

2.

public class IClassTwoFactory implements IClassFactory {


@Override

public IStudent CreateStudent() {

// TODO Auto-generated method stub

return new Student2();

}


}

創建接口ISudent

public interface IStudent {

public int SkillOne();

public void SkillTwo();

public void Industry();


}

創建實現類

public class Student1 implements IStudent {


@Override

public int SkillOne() {

// TODO Auto-generated method stub

int ss=11;

System.out.println("刻苦勤奮,勇于創新");

return ss;

}


@Override

public void SkillTwo() {

// TODO Auto-generated method stub

System.out.println("學習努力,有上進心");

}


@Override

public void Industry() {

// TODO Auto-generated method stub

System.out.println("吃苦,勤勞勇敢");

}

public String toString(Object String){

String s="優點1:"+this.SkillOne();

return s;

}


}

學生2:。。。

創建測試類

/** ?

?* <h1>工廠模式</h1> ?

?*?

?* @author lxh ?

?* ??

*/ ?

public class ClientTest { ??


? ?/**

?* <br>工廠方法模式實現時,客戶端需要決定實例化那個工廠來實現運算類,選擇判斷的問題還是存在的,也就是說,工廠方法把簡單工廠的內部邏輯判斷移到了客戶端代碼來進行。 ?

? ? ?* 你想要加的功能,本來是改工廠類的,而現在是修改客戶端。 ?

? ? ?*?

? ? ?*/ ?

? ?public static void main(String[] args) { ??

? System.out.println("學生1:");

? ? ? ? IClassFactory factory=new IClassOneFactory(); ??

? ? ? ?IStudent becility=factory.CreateStudent(); ??

? ? ? ?becility.SkillOne(); ??

? ? ? ?becility.SkillTwo(); ??

? ? ? ?//becility.Industry();?

? ? ? ?System.out.println("學生2:");

? ? ? IClassFactory factory2=new IClassTwoFactory(); ??

? ? ? ?IStudent industry=factory2.CreateStudent(); ??

? ? ? // industry.SkillOne(); ??

? ? ?// ?industry.SkillTwo();?

? ? ??

? ? ? ?industry.Industry(); ?

? ?} ??

?} ?

結果:

學生1:

刻苦勤奮,勇于創新

學習努力,有上進心

學生2:

任勞任怨,是個好學生

通過這個學習,對工廠模式的創建和實現有進一步的實現,對設計模式的簡潔與應用的場景有更好的了解,在實踐中應用生活的例子,讓學習更有感覺。發現生活中的美才是學習的最好的詮釋。

應用:

javaweb設計模式之道

?
 



轉載于:https://blog.51cto.com/10879428/1789744

總結

以上是生活随笔為你收集整理的工厂模式的理解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。