使用GoF的TemplateMethod设计模式

使用GoF的TemplateMethod设计模式

ID:41786593

大小:246.89 KB

页数:18页

时间:2019-09-02

使用GoF的TemplateMethod设计模式_第1页
使用GoF的TemplateMethod设计模式_第2页
使用GoF的TemplateMethod设计模式_第3页
使用GoF的TemplateMethod设计模式_第4页
使用GoF的TemplateMethod设计模式_第5页
资源描述:

《使用GoF的TemplateMethod设计模式》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、使用GoF的TemplateMethod設計模式不要期待一部汽車能在街道上,也能在沙灘上跑。不要期待_支AP能在WinMobile上跑,也能在Android上跑。但是,如果能隨時抽換輪胎的話,汽車就有可能。但是,如果能隨時抽換應用子類的話,AP就有可能。簡介GoFTemplateMethod設計模式大家熟知的TemplateMethod模式,就是來自GoF的«DesignPatterns»一書,其介紹這個常用的模式,如下圖:冋目I口

2、占Fb

3、^

4、t

5、

6、〒p>卜计q[q

7、c

8、日

9、丄In

10、・・Tt

11、口Abstractcl

12、ass+TemplateMethodO:void+PrimitiveOperationl0:void+PrimitiveOperation2Q:voidTemplateMethodQ{PrimitiveOperation10;PrimitiveOperation20;……}ConcreteClass+PrimitiveOperation10:void+PrimitiveOperation40:void圖1GoF的TemplateMethod模式圖由於模式是專家們從過去經驗中坤鍊出來的,用來引導人們的思維,可促進人們「

13、依樣畫葫蘆」,進而「舉一反三」以便能更有效化解目前或未來所面臨的問題。例如,我們能「依樣畫葫蘆」並加以修正,發揮Java的介面定義機制,如下圖:目I口冋T▼司f丨亍丨十IQ

14、q

15、C

16、q丄I口

17、•”“It

18、lWi抽象類與Client的介面於是,可以依據此圖而編寫代碼如下:w撰寫代碼》Step-1.建立一個Java應用Project:Ex03-06°Ex03-06sd?src二田(defaultpackage)®0Bird.java由0IShape.java由;0JMain.java•••土0Shape.javaJ•St

19、ep-2.定義IShape介面。//IShape.javaimportjava.awt.Graphics;interfaceIShape{voidtemplate_paint(Graphicsgr);IStep-3.撰寫Shape類。//Shape.javaimportjava.awt.*;publicabstractclassShapeimplementsIShape{publicvoidtemplate_paint(Graphicsgr){//畫背景invariant_paint(gr);//畫前貞hook_pa

20、int(gr);}privatevoidinvariant_paint(Graphicsgr){//畫天空背景gr.setColor(Color.Z?/acA:);gr.fillRect(1030,200,100);//畫前景Iprotectedvoidhook_paint(Graphicsgr){}}Step-4.撰寫Bird類。//Bird.javaimportjava.awt.*;publicclassBirdextendsShape{@Overridepublicvoidhook_paint(Graphics

21、gr){//畫圖(海鷗)指令gr.sctColor(Color.Qwz);gr.drawArc(3O,8O,90,110,40,100);gr.drawArc(88,93,90,100,40,80);gr.setColor(Color.KAzre);gr.drawArc(30,55,90,150,35,75);gr.drawArc(90,80,90,90,40,80);)1Step-5.撰寫JMain類。//JMain.javaimportjava.awt.*;importjavax.swing.*;classJPe

22、xtendsJPanel{publicvoidpaintComponent(Graphicsgr){super.paintComponents(gr);IShapeisp=newBird();isp.template_paint(gr);1)publicclassJMainextendsJFrame{publicJMain(){setTitle("°);selSize(350,250);}publicstaticvoidmain(String[]args){JMainfrm=newJMain();JPpanel=ne

23、wJP();frm.add(panel);frm.setDefaultCloseOperation(JFrame.EX77LOALCLOSE);frm.setVisible(true);}}vv說明>>在本章裡,我們運用「變與不變分離」手藝來設計出Shape與Bird父、子類,再參考TemplateMethod模式,而得到更優越的設計,如3-5

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。