设计模式问答(3)-Java开发Java经验技巧

设计模式问答(3)-Java开发Java经验技巧

ID:43875908

大小:789.74 KB

页数:12页

时间:2019-10-16

设计模式问答(3)-Java开发Java经验技巧_第1页
设计模式问答(3)-Java开发Java经验技巧_第2页
设计模式问答(3)-Java开发Java经验技巧_第3页
设计模式问答(3)-Java开发Java经验技巧_第4页
设计模式问答(3)-Java开发Java经验技巧_第5页
资源描述:

《设计模式问答(3)-Java开发Java经验技巧》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、设计模式问答(3)-编程开发技术设计模式问答(3)木文作者:ImportNew・zdpg未经许口J,禁止转载!简介这篇文章是设计模式问答系列(1)和(2)的延续。在这篇文章里,我们将会介绍状态模式,策略模式,访问者模式,适配器模式和享元模式。如果你完全不了解设计模式或者你其实并不想通读这篇文章,你可以在这里看我们免费的视频?designpattern?Trainingandinterviewquestions/answers?o如果你还没冇读过我前边的系列,你口J以通过下面的链接阅读:1・设计模式问答(1):工程模式,抽象工程模式,构造器模式,原型模式,单例模式和命令模式2.设计模式

2、问答(2):解释器模式,迭代器模式,调停者模式,备忘录模式和观察者模式3.设计模式问答(4):桥接模式、组合模式、外观模式、职责链模式、代理模式以及模板模式•UML面试问题系列1??UMLPart1•UML面试问题系列2??UMLpart2你能解释下状态模式吗?状态模式允许一个对象根据对象的当前值改变自C的行为。参考下面的图片一“策略模式的例子”。这是一个开关操作的例子。如果灯泡的是关闭的状态,当你按下开关,灯泡会打开。如果灯泡是打开的状态,当你按下开关,灯泡将会关闭。简而言Z,状态模式就是根据状态改变行为。7、Figure:—策略模式的例子现在讣我们用C#来实现这个灯泡例子。图片“

3、策略模式正在进行”同时显示了类和客户端的代码。我们创建一个叫'cisState'的类,它包含一个enum类型其有'on'和'off'两种状态常量。我们定义了一个方法'PressSwitch',它会根据当前的状态切换自己的状态。在同一张图的右手边我们定义了一个客户端,它使用'cisState'类并调用其"PressSwitch()'方法。我们使用BdbisolfP««sSv.ilrhsrlvave3uD.curretx^BulbSLace=.Oil;puJj

4、licscrinaaecScaciis」ClientcodeconsununqthestateclassprivaLevoidfotnClickClicklot;jecu3enderfEv€:lczlj3ejpuklicvoidgre勻i匕uh①!"txr5t.Gre.Text.i£(cuxient3aLL'9cace二二.0£i>otoSt.^re・qlcSrac-u?0;else11IcuirentBuIL3cace==aCl.Ou:iDependirvgonatrnemebehaviouroftheobiectschanges,fCallthe•PressSv/itchmeth

5、odfromthedientanddisplaythestatusofthebulb匚urrentBuibStcte?-<»:t/1.-i•-.Off•・・、・••、、》、■・、S.、r*、••、叱I"•、•・.-:.・、、•、a、Figure:-状态模式正在进行你能解释下策略模式吗?策略模式是一个类内置的算法集,可以根据使用的类交换算法。当你想在运行时决定使用的算法,这个模式会冇用。让我们看一个实际屮策略模式如何工作的例子。以数学的计算为例,计算冇相加和相减的策略。图片“策略模式正在进行”以形象的方式说明同样的情形。己知两个数,根据策略给出结果。所以如果是相加策略,两个数将会相加,

6、如果是相减策略,将会得到相减的结果。这些策略只不过是算法。策略模式不过是对类内算法的封装而已。、‘•・Algorithms.•・••宀•・・・2八、•宀八Figure:-策略模式正在进行所以我们需要深入的第一件事就是如何封装类内的这些算法。下而的图片“封装算法”显示了'add'算法如何封装在'clsAddStatergy,类中,substract"算法如何封装在<clsSubstractStatergy,类屮。这两个类都继承自类'clsStratergy'并重定义了'calculate'方法。publicabscrastclasshtaterg^FpublicoJjstra匚tMai

7、ninterfacemeCalculate(meintNuirtoGrl,ir.tintNumber2);pubLi匚classclaAddStatercY:l:L二.eraypublicoverridemtCalcu丄LntIJ-.irtberl,mtmcNurtoer2)rctuiuintNuinber1-tintNuiubEE2;Add3tfl1erqyclasspublicclasscJsSuissEractsrarerg^r:r1arprgyp

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

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

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