資源描述:
《設(shè)計(jì)模式簡單工廠.doc》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、.簡單工廠設(shè)計(jì)模式目錄1.1摘要12.1關(guān)鍵字23.1開發(fā)工具24.1簡單工廠模式動機(jī)與定義:24.1.1模式動機(jī)24.1.2模式定義25.1簡單工廠模式結(jié)構(gòu)36.1簡單工廠模式實(shí)例:36.1.1代碼分析36.1.1.1Product(Shape抽象類)代碼:36.1.1.2ConcreteProduct(Juxing,YuanXing,SanJiao具體產(chǎn)品類)代碼:3JuXing類:3YuanXing類:3SanJiao類:36.1.1.3Factory(Factory類)代碼:36.1.1.4(main類):36.1.1.5運(yùn)行結(jié)果:37.1結(jié)論38.1參
2、考文獻(xiàn):31.1摘要本文從面向?qū)ο蟮慕嵌葘ava..接口的概念、作用以及使用它的好處做分析,講解面向接口編程的方法,結(jié)合初步接觸軟件開發(fā)的人員習(xí)慣,從簡單工廠設(shè)計(jì)模式的概念和其結(jié)構(gòu)以及用途進(jìn)行解析,重點(diǎn)講解簡單工廠設(shè)計(jì)模式在軟件開發(fā)過程中的作用和好處,通過一些實(shí)例來說明簡單工廠設(shè)計(jì)模式的特點(diǎn)。2.1關(guān)鍵字面向?qū)ο?;java接口;接口編程;簡單工廠設(shè)計(jì)模式。3.1開發(fā)工具Eclipsejava語言開發(fā)4.1簡單工廠模式動機(jī)與定義:在實(shí)際的軟件開發(fā)過程中有時(shí)需要創(chuàng)建一些來自于相同父類的類的實(shí)例,為此可以專門定義一個類來負(fù)責(zé)創(chuàng)建這些類的實(shí)例,這些被創(chuàng)建的實(shí)例具有共同
3、的父類。在這種情況下,可以通過傳入不同的參數(shù)從而獲取不同的對象,理由Java語言的特征,習(xí)慣上將創(chuàng)建其他類實(shí)例的方法定義為static方法,外部不需要實(shí)例化這個類就可以直接調(diào)用該方法來獲得需要的對象,該方法也成為靜態(tài)工廠方法。4.1.1模式動機(jī)考慮一個簡單的軟件應(yīng)用場景,一個軟件系統(tǒng)可以提供多個外觀不同的按鈕(如圓形按鈕,矩形按鈕等),這些按鈕都源自同一個基類,不過在繼承基類之后不同的子類修改了部分屬性從而使得它們可以呈現(xiàn)不同的外觀,如果我們希望在使用這些按鈕時(shí),不需要知道這些具體按鈕類的名字,只需要知道表示該按鈕的一個參數(shù),并提供一個調(diào)用方便的方法,把該參數(shù)傳
4、入方法即可返回一個相應(yīng)的按鈕對象,此時(shí),就可以使用簡單工廠模式。4.1.2模式定義簡單工廠模式專門定義一個類來負(fù)責(zé)創(chuàng)建其他類的實(shí)例,被創(chuàng)建的實(shí)例通常具有共同的父類。..5.1簡單工廠模式結(jié)構(gòu)a、Factory(工廠角色)是簡單工廠模式的核心,它負(fù)責(zé)實(shí)現(xiàn)創(chuàng)建所有具體產(chǎn)品類的實(shí)例。工廠類可以被外界直接調(diào)用,創(chuàng)建所需的產(chǎn)品對象。b、Product(抽象產(chǎn)品角色)是所有具體產(chǎn)品角色的父類,它負(fù)責(zé)描述所有實(shí)例所共有的公共接口。c、ConcreteProduct(具體產(chǎn)品角色)繼承自抽象產(chǎn)品角色,一般為多個,是簡單工廠模式的創(chuàng)建目標(biāo)。工廠類返回的都是該角色的某一具體產(chǎn)品。6
5、.1簡單工廠模式實(shí)例:使用簡單工廠模式設(shè)計(jì)一個可以創(chuàng)建不同幾何形狀(如圓形、方形和三角形等)的繪圖工具,每個幾何圖形都要繪制draw()和擦除erase()兩個方法,要求在繪制不支持的幾何圖形時(shí),提示一個UnSupportedShapeException。..6.1.1代碼分析6.1.1.1Product(Shape抽象類)代碼:importjava.awt.Graphics;importjavax.swing.JPanel;publicabstractclassAbstractShape{staticGraphicsg;publicabstractvoiddr
6、aw(JPanelp);publicabstractJPanelerase(JPanelp);}分析:創(chuàng)建draw()和erase()方法供子類繼承調(diào)用;..6.1.1.2ConcreteProduct(Juxing,YuanXing,SanJiao具體產(chǎn)品類)代碼://各個產(chǎn)品類代碼類似、需要添加產(chǎn)品類時(shí)只需要另外創(chuàng)建一個類然后再修改工廠類少量代碼即可JuXing類:importjavax.swing.JPanel;//繪制矩形publicclassJuXingextendsAbstractShape{privateJPanelp;Overridepublic
7、voiddraw(JPanelp){//TODOAuto-generatedmethodstubthis.p=p;//g.drawrect(50,50,100,50);}OverridepublicJPanelerase(JPanelp){p.repaint();//TODOAuto-generatedmethodstubreturnp;}}YuanXing類:importjavax.swing.JPanel;//繪制圓形publicclassYuanXingextendsAbstractShape{privateJPanelp;..Overridepublic
8、voiddraw(JPa