使用GoF的Template Method设计模式

使用GoF的Template Method设计模式

ID:38693003

大小:239.00 KB

页数:19页

时间:2019-06-17

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

《使用GoF的Template Method设计模式》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、19¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯使用GoF的TemplateMethod設計模式不要期待一部汽車能在街道上,也能在沙灘上跑。不要期待一支AP能在WinMobile上跑,也能在Android上跑。但是,如果能隨時抽換輪胎的話,汽車就有可能。但是,如果能隨時抽換應用子類的話,AP就有可能。簡介GoFTemplateMethod設計模式大家熟知的TemplateMethod模式,就是來自GoF的<

2、atterns>>一書,其介紹這個常用的模式,如下圖:19¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯圖1GoF的TemplateMethod模式圖由於模式是專家們從過去經驗中焠鍊出來的,用來引導人們的思維,可促進人們「依樣畫葫蘆」,進而「舉一反三」以便能更有效化解目前或未來所面臨的問題。例如,我們能「依樣畫葫蘆」並加以修正,發揮Java的介面定義機制,如下圖:19¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

3、¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯圖2抽象類與Client的介面於是,可以依據此圖而編寫代碼如下:<<撰寫代碼>>Step-1.建立一個Java應用Project:Ex03-06。19¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯Step-2.定義IShape介面。//IShape.javaimportjava.awt.Graphics;interfaceIShap

4、e{voidtemplate_paint(Graphicsgr);}Step-3.撰寫Shape類。//Shape.javaimportjava.awt.*;publicabstractclassShapeimplementsIShape{publicvoidtemplate_paint(Graphicsgr){//畫背景invariant_paint(gr);//畫前景hook_paint(gr);}privatevoidinvariant_paint(Graphicsgr){//畫天空背景gr.setColor(Color.

5、black);gr.fillRect(10,30,200,100);//畫前景}protectedvoidhook_paint(Graphicsgr){}}Step-4.撰寫Bird類。//Bird.javaimportjava.awt.*;publicclassBirdextendsShape{@Overridepublicvoidhook_paint(Graphicsgr){//畫圖(海鷗)指令gr.setColor(Color.cyan);gr.drawArc(30,80,90,110,40,100);gr.drawArc

6、(88,93,90,100,40,80);gr.setColor(Color.white);gr.drawArc(30,55,90,150,35,75);gr.drawArc(90,80,90,90,40,80);}}Step-5.撰寫JMain類。19¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯//JMain.javaimportjava.awt.*;importjavax.swing.*;classJPextendsJ

7、Panel{publicvoidpaintComponent(Graphicsgr){super.paintComponents(gr);IShapeisp=newBird();isp.template_paint(gr);}}publicclassJMainextendsJFrame{publicJMain(){setTitle("");setSize(350,250);}publicstaticvoidmain(String[]args){JMainfrm=newJMain();JPpanel=newJP();frm.add

8、(panel);frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frm.setVisible(true);}}<<說明>>在本章裡,我們運用「變與不變分離」手藝來設計出Shape與Bird父、子類,再參考Te

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

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

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