日韩性视频-久久久蜜桃-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设计模式:简单工厂模式的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 中文字幕在线观看一区二区三区 | 天堂网2020 | 加勒比hezyo黑人专区 | 亚洲欧美在线视频免费 | 国产欧美熟妇另类久久久 | 日韩a视频 | 91精品国产精品 | 久久久看| 亚洲爱情岛论坛永久 | 女女h百合无遮涩涩漫画软件 | 请用你的手指扰乱我吧 | 台湾性生生活1 | 亚洲国产精品人人爽夜夜爽 | 懂色a v| 一本在线免费视频 | 免费一级特黄3大片视频 | 美女被啪啪 | 偷拍第1页 | 日韩av中字 | 国产一级二级毛片 | 调教撅屁股啪调教打臀缝av | 99re热这里只有精品视频 | 日本一区二区高清不卡 | 狠狠干干| 91婷婷 | 97在线免费观看视频 | 国产爽爽视频 | 欧美午夜视频 | 99精品欧美一区二区三区综合在线 | 美丽的姑娘在线观看 | 日本一区二区三区视频在线 | 古装做爰无遮挡三级聊斋艳谭 | 国产美女主播在线 | 久久久久无码国产精品一区 | 日本免费一区二区三区四区五六区 | 精品一区二区三区在线免费观看 | 麻豆chinese新婚xxx | 久一区二区三区 | 亚洲天堂网在线观看 | 亚洲综合久久久 | 在线a天堂 | 亚洲一级免费毛片 | 人人九九精 | 久久久久亚洲AV成人无在 | 欧美一卡二卡在线观看 | 天天色影综合网 | 91久久精品一区二区别 | 污污视频在线 | 成人性生交视频免费观看 | 91精品国产一区二区三区蜜臀 | 欧美性受xxxx | 超碰三级| 向日葵视频在线播放 | 日本a级片在线播放 | 男女性高潮免费网站 | jizz日本18 | 91精品国产成人 | 中国av免费看 | 91麻豆国产| 蜜桃久久精品成人无码av | 欧美一区二区三区激情啪啪 | 久久影视av | 国产欧美一区二区视频 | 破处视频在线观看 | 日本女v片 | 亚洲精品久久久蜜桃网尤妮丝 | 先锋av网| xxxxhd欧美 | 欧美 日韩 国产 成人 在线 91 | 国产成人免费av一区二区午夜 | 玉米地疯狂的吸允她的奶视频 | 国产第一页在线播放 | 亚洲精品网站在线播放gif | 国产探花精品在线 | 秋霞视频在线观看 | 日韩久久不卡 | 丁香花完整视频在线观看 | 欧美成人三级伦在线观看 | 欧美国产激情 | 黄网站免费看 | av自拍一区 | 人妻在线一区二区三区 | 国产精品一区二区久久国产 | 亚洲视频中文字幕在线观看 | 女人一区二区 | www.日韩视频| 欧美aaa级 | 国产精品伦理一区 | 大尺度电影在线 | 久色精品 | 欧美深夜在线 | 91精品国产综合久久香蕉922 | 久久图库| 国产精品三级久久久久久电影 | 少妇高潮一区二区三区 | 在线观看视频一区二区三区 | 免费观看日韩 | 亚洲男人av | 欧美色成人|