tcl面向对象设计模式

tcl面向对象设计模式

ID:27747244

大小:62.37 KB

页数:7页

时间:2018-12-05

tcl面向对象设计模式_第1页
tcl面向对象设计模式_第2页
tcl面向对象设计模式_第3页
tcl面向对象设计模式_第4页
tcl面向对象设计模式_第5页
资源描述:

《tcl面向对象设计模式》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、TCL面向对象设计模式TCL面向对象设计模式•没计模式描述和解决了在软件开发与没计过程中反复发生和遇到的问题。各种版本的设计模式文献层岀不穷,很多被誉为经典之作,可见设计模式对于软件开发的重要性。不过目前大部分的的设计模式文档都是以C++,Java等作为示例代码,而目前我们的自动化测试平台也在进行00面向对象的改造,在此分享一些IncrTcl实现的模式。成员对象•一个常见问题是怎样实现一个成员对象,或者简单地说就是某个成员变S是另一个对象。解决办法就是让一个成员变量拥有另一个对象的引用,然后在构造函数和析构函数里创建和删

2、除它。例如,对象B拥有一个对象Aitcl::classA{methodprint{}{puts’’HellofromA.Mynameis$this.’’}itcl::classB{variableaconstructor{}{seta[A#auto]}用#B的构造函数创建A对象的一个实例引destructor{itcl“deleteobject$a}methodprint{}{$aprint}Bb」nstanceBc_instanceb」nstanceprintc_instanceprint运行结果:HellofromA

3、.Mynameis::B::aO.HellofromA.Mynameis::•在这个例子中还有个小tip,就是对于#3以0的川法。在tel的帮助文档是这么解释的:IfobjNamecontainsthestring"#autoM,thatstringisreplacedwithanautomaticallygeneratedname.NameshavetheformclassName

4、合•尽管创建一个成员对象很容易,但是要在IncrTcl里引用成员对象的变量和方法则可能很麻烦。并且不断有关于继承是否已经陈旧过时,或者应该有更合适的开发模式的讨论。终于产生了一种可替换和避免使用继承的模式出现,对象组合。itcl::classuser{publicvariableusernameitcl::classsession{variablethisuservariablethatuserconstructor{}{setthisuser[userthisuserlsetthatuser[userthatuser]

5、methodosend{itemcmd}{setobs[itcl::findobjects]setitem[stringtrimleft$itemsetpos[Isearch-exact$obs$item]if{$pos〉=0}{return[eval[lindexSobs$pos]$cmd]sessionaaosend-thisuser{configure-usernameFred)puts[aosend-thisuser{cget-username}]运行结果:Fred•confgiure和cget是IncrTel的

6、内賈方法,用来对public变:W:进行存取配賈抽象工厂•抽象工厂是设计模式里一种经典的模式,T面的IncrTcl实现示例说明抽象类和纯虚方法的使用。一个抽象类不能够被实例化,仅有子类的实例对象可以被创建。纯虚函数在父类里没有定义,而是放在子类里实现。itcl::classFactory{constructor{}{#确保抽象类不被实例化.if{[namespacetail[infoclass]]==.’Factory’’}{error’’Error:can’tcreateFactoryobjects-abstractc

7、lass••’}#验证是否在子类里定义了status方法if{[$thisinfofunctionstatus-body]==’"’}{error"Error:method'status'undefined."}}protectedmethodstatus{}{}%Factory#autoError:can’tcreateFactoryobjects-abstractclass.%itcl::classWidgetFactory{inheritFactory}%WidgetFactory#autoError:method

8、"status’undefined.%itcl“classMyFactory{inheritFactorymethodstatus{}{putsMyFactory::status}}%MyFactory#automyFactoryO•在IncrTcl里,工厂方法实现了在父类的名词空间里创建对象的方式。在下面这个工厂方

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

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

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