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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

java设计模式:简单工厂模式

發布時間:2025/3/20 asp.net 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java设计模式:简单工厂模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、什么是簡單工廠模式

簡單工廠模式屬于類的創建型模式,又叫做靜態工廠方法模式。通過專門定義一個類來負責創建其他類的實例,被創建的實例通常都具有共同的父類。

二、簡單工廠模式的角色和職責

1.工廠(Creator)角色簡單工廠模式的核心,它負責實現創建所有實例的內部邏輯。工廠類可以被外界直接調用,創建所需的產品對象。

2.抽象(Product)角色簡單工廠模式所創建的所有對象的父類,它負責描述所有實例所共有的公共接口。

3.具體產品(Concrete Product)角色簡單工廠模式所創建的具體實例對象

三、簡單工廠模式的UML圖

sports:抽象角色

Basketball和Football:具體產品角色

sportsFactory:工廠角色

四、簡單工廠模式代碼

這個例子,用運動作為抽象角色,足球和籃球作為具體的產品角色來講解,下面看具體代碼。

首先我們創建一個抽象類sports,同時有一個運動的方法

public interface Sports {/** 運動*/public void play(); }

然后,定義了一個足球類籃球類,同樣有運動方法

public class Basketball implements Sports{/** 運動*/public void play(){System.out.println("打籃球...");} } public class Football implements Sports{/** 運動*/public void play(){System.out.println("踢足球啦...");} }

最后寫一個工廠類,用來創造足球運動籃球運動

這里創建的方式有很多種方式,我們從簡單的開始,逐步優化代碼。

4.1、單獨創建實例方法

public class SportsFactory {/** 獲得Basketball類的實例public static Sports getBasketball() {return new Basketball();}/** 獲得Football類實例*/public static Sports getFootball() {return new Football();} }

這種方法,直接用兩個不同的方法直接創建兩個實例對象。

4.2、邏輯判斷的方式

public class SportsFactory {/** getSports方法,獲得所有產品對象*/public static Sports getSports(String type) throws InstantiationException, IllegalAccessException, ClassNotFoundException {if(type.equalsIgnoreCase("Basketball")) {return Basketball.class.newInstance();} else if(type.equalsIgnoreCase("Football")) {return Football.class.newInstance();} else {System.out.println("找不到相應的實例化類");return null;}} }

先傳入一個類型參數,然后判斷,再用反射的方式返回對象。

前面這兩種方式都不是最優的方式,因為他們都違背了開閉原則

開閉原則定義:一個軟件實體如類、模塊和函數應該對擴展開放,對修改關閉。

開放-封閉原則的意思就是說,你設計的時候,時刻要考慮,盡量讓這個類是足夠好,寫好了就不要去修改了,如果新需求來,我們增加一些類就完事了,原來的代碼能不動則不動。這個原則有兩個特性,一個是說“對于擴展是開放的”,另一個是說“對于更改是封閉的”。面對需求,對程序的改動是通過增加新代碼進行的,而不是更改現有的代碼。這就是“開放-封閉原則”的精神所在。

下面,我們再優化一下。

4.3、反射實現方式

public class SportsFactory {/** getSports方法,獲得所有產品對象*/public static Sports getSports(String type) throws InstantiationException, IllegalAccessException, ClassNotFoundException {Class Sports = Class.forName(type);return (Sports) Sports.newInstance();} }

這種方法,通過反射的方式實現,不管我們還需要擴展什么其他功能都不用再更改這個工廠類的代碼了,所以就符合開閉原則了。

五、測試

public class MainClass {public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException {//方法一測試 // //實例化一個Basketball // Basketball Basketball = new Basketball(); // //實例化一個Football // Football Football = new Football(); // // Basketball.play(); // Football.play();//方法二測試 // //實例化一個Basketball,用到了多態 // Sports Basketball = new Basketball(); // Sports Football = new Football(); // Basketball.play(); // Football.play();// //實例化一個Basketball // Sports Basketball = SportsFactory.playBasketball(); // Sports Football = SportsFactory.playFootball(); // Basketball.play(); // Football.play();//方法三測試Sports Basketball = SportsFactory.getSports("Basketball");Sports Football = SportsFactory.getSports("Football");Basketball.play();Football.play();} }

運行結果:

六、簡單工廠模式應用場景

**優點:**工廠類是整個模式的關鍵.包含了必要的邏輯判斷,根據外界給定的信息,決定究竟應該創建哪個具體類的對象.通過使用工廠類,外界可以從直接創建具體產品對象的尷尬局面擺脫出來,僅僅需要負責“消費”對象就可以了。而不必管這些對象究竟如何創建及如何組織的.明確了各自的職責和權利,有利于整個軟件體系結構的優化

缺點:由于工廠類集中了所有實例的創建邏輯,違反了開閉原則,將全部創建邏輯集中到了一個工廠類中;它所能創建的類只能是事先考慮到的,如果需要添加新的類,則就需要改變工廠類了。當系統中的具體產品類不斷增多時候,可能會出現要求工廠類根據不同條件創建不同實例的需求.這種對條件的判斷和對具體產品類型的判斷交錯在一起,很難避免模塊功能的蔓延,對系統的維護和擴展非常不利;

總結

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

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

主站蜘蛛池模板: 91在线观看免费视频 | 人与嘼交av免费 | 69人妻一区二区三区 | 国产高清不卡视频 | 一区二区三区在线免费视频 | 日本人妻熟妇久久久久久 | 69av国产| 国产精品二 | 日日燥夜夜燥 | 亚洲永久在线 | 久久99免费 | 一本色道久久88综合日韩精品 | 免费av在线播放网址 | 台湾男男gay做爽爽的视频 | 91狠狠 | 日本女人毛片 | 女的高潮流时喷水图片大全 | 久久久久女教师免费一区 | 在线观看av中文字幕 | 欧美特级aaa | 午夜影剧院 | 超碰资源 | 精品国产免费无码久久久 | jizz亚洲女人 | 日韩av电影手机在线观看 | 一久久| 日韩伦理一区二区三区 | 亚洲综合网址 | 中国女人和老外的毛片 | 亚色一区 | 朝桐光在线观看 | 日韩电影一区二区 | 午夜精品久久久久久久99黑人 | 初音未来打屁股 | 欧洲亚洲天堂 | 久久影视中文字幕 | 黄色免费网站在线 | 色哟哟导航 | 中文日韩欧美 | 99久久久无码国产精品衣服 | 久久av综合网 | 国产成人亚洲综合a∨婷婷 台湾a级片 | 色插综合 | 在线观看sm | 国产伦精品一区二区三区千人斩 | 偷拍自拍一区 | 亚洲无码一区二区三区 | 成人av免费在线观看 | 亚洲黄一区 | 九九精品影院 | 日韩黄色一区二区 | 黄色网址在线看 | 国内精品偷拍 | 久久综合热| 国产一区二区视频免费在线观看 | 视频国产精品 | 永久免费黄色 | 国产调教在线 | 日本阿v视频在线观看 | 在线观看黄色av网站 | 国产精品自慰网站 | 韩国日本在线 | 播放毛片 | 久在线视频 | 亚洲天堂网视频 | 秋霞在线观看秋 | 国产激情在线播放 | 婷婷色激情 | 可以免费看的毛片 | 日日躁狠狠躁 | hitomi一区二区三区精品 | 一级黄色大毛片 | 亚洲4438 | 国产人人看 | 天堂视频在线免费观看 | 亚洲av无码乱码在线观看富二代 | 国产午夜伦鲁鲁 | 人妻一区二区在线 | 欧美日韩激情一区 | 国产91熟女高潮一区二区 | 卡一卡二卡三 | 成人羞羞网站 | 国产青草视频在线观看 | 91香蕉在线视频 | 久久亚洲天堂 | 国产老头和老头xxxx× | 亚洲美女性视频 | 婷婷麻豆 | 一级黄色录像大片 | 国产精品四虎 | 性――交――性――乱睡觉 | 亚洲国产成人精品无码区99 | 色老头一区 | 51福利视频 | 亚洲乱码一区二区三区在线观看 | 黄色一级片一级片 | 伊人自拍| 国产裸体美女永久免费无遮挡 | 黄色一级片免费观看 |