日期:2011-03-22 16:17:00 来源:本站整理
通过承当举行筹划[Java编程]
本文“通过承当举行筹划[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
学习了多形性的知识后,由于多形性是如此“聪明”的一种工具,所以看起来仿佛全部东西都应当担当.但假定过度利用担当技术,也会使自己的计划变得不必要地复杂起来.事实上,当我们以一个现成类为底子成立一个新类时,如首先挑选担当,会使情形变得非常复杂.
一个更好的思绪是首先挑选“合成”——假如不能非常肯定自己应利用哪一个.合成不会逼迫我们的程序计划进入担当的分级构造中.同时,合成显得越发机动,因为可以动态挑选一种范例(以及行为),而担当要求在编译期间精确地知道一种范例.下面这个例子对此举行了阐释:
在这里,一个Stage对象包含了指向一个Actor的句柄,后者被初始化成一个HappyActor对象.这意味着go()会产生特定的行为.但由于句柄在运行期间可以重新与一个差别的对象绑定或结合起来,所以SadActor对象的句柄可在a中得到替换,然后由go()产生的行为发生改变.这样一来,我们在运行期间就得到了很大的机动性.与此相反,我们不能在运行期间换用差别的情势来举行担当;它要求在编译期间完好决意下来.//: Transmogrify.java // Dynamically changing the behavior of // an object via composition. interface Actor { void act(); } class HappyActor implements Actor { public void act() { System.out.println("HappyActor"); } } class SadActor implements Actor { public void act() { System.out.println("SadActor"); } } class Stage { Actor a = new HappyActor(); void change() { a = new SadActor(); } void go() { a.act(); } } public class Transmogrify { public static void main(String[] args) { Stage s = new Stage(); s.go(); // Prints "HappyActor" s.change(); s.go(); // Prints "SadActor" } } ///:~
一条通例的计划原则是:用担当表达行为间的差别,并用成员变量表达状况的改变.在上述例子中,二者都得到了利用:担当了两个差别的类,用于表达act()办法的差别;而Stage通过合成技术答应它自己的状况发生改变.在这种情形下,那种状况的改变同时也产生了行为的改变.
以上是“通过承当举行筹划[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
- ·上一篇文章:java纯承当与扩大
- ·下一篇文章:java排序算法
- ·中查找“通过承当举行筹划”更多相关内容
- ·中查找“通过承当举行筹划”更多相关内容
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论