四、面向对象 对象扩展与成长
来源:互联网 发布:编程珠玑 编辑:程序博客网 时间:2024/06/06 18:37
前面的继承是类的扩展方式,类在java中是类对象,这里我们最好就把类叫做对象的定义,或者是说描述
这篇文章说的扩展,不是类的扩展,而是对象的扩展。对象是计算环境的搭建者和参与者,对象适应环境变化的能力表现在对象的扩展性和成长性上。
一、让对象依赖于抽象
话说,DOTA中的剑圣1万年前是个书生,不会武功,剑圣的众多绝招都是后来学的。
//人 类
class ren {
List<wugong> wugongliebiao ;//武功列表
List<wenzi> wenziliebiao;//认识的文字列
public boolean xuexiWugong(wugong w){ //学习武功
wugongliebiao.add(w)
}
public boolean xuexiWenzi(wenzi w){ //学习文字
wugongliebiao.add(w)
}
}
无敌斩
class wudizhan implements wugong{
}
剑刃风暴
class jianrenfengbao implements wugong{
}
ren js = new ren();//剑圣出生,什么都不会
js.xuexiWugong(new wudizhan)); //学无敌斩
js.xuexiWugong(new jianrenfengbao);//学剑刃风暴
一个人,在一个环境中总是依靠环境中其他的事物成长,这种有助于成长的扩展性,我们用依赖于抽象进行。好比,只要是武功,剑圣就能学
二、多多考虑组合,对象的属性都是抽象
剑圣出生是没有穿衣服的,在他活着的1万年间,他穿过很多的衣服,衣服能增加他的防御力
class ren(){
...
Yifu yifu;
setYifu(Yifu f){
this.yifu = f;
}
public Integer getFangyuli(){
return yifu.fangyuli
}
}
Interface Yifu {
public Integer getFangyuli();
}
class longmenkaijia implements Yifu{ //龙门铠甲
private fangyuli = 10000;
public Integer getFangyuli(){
return fangyuli ;
}
}
ren js = new ren();
js.setYifu(new longmenkaijia());
君子擅甲于物也!
三、能扩展自己的同时,也要识抬举,懂得被别人欣赏和包装
剑圣到现在还不是英雄,暴雪要给他加上英雄的光环,剑圣喜坏了
class yingxiong extends ren{
Guanghuan gh; //光环
ren r;
public yingxiong(ren r){
this.ren = r;
gh = new Guanghuan_x();
}
}
js = new yingxiong(js) ;js成了英雄,有了x光环。
地球上的物质和联系组成了完整的地球生态,人和人之间的联系组成了社会形态,相对来说社会形态比计算环境更为复杂,我们系统中的对象也没有人这么灵活,如何让对象更具鲜活性,让我们的计算环境具备文化风景,是我们程序员永久的主题,也是源于生活的智慧!
- 四、面向对象 对象扩展与成长
- 面向对象与扩展学习的总结
- 面向对象与面向对象
- 面向对象程序设计(四)
- 面向对象四
- Java面向对象(四)
- 面向对象(四)
- 面向对象(四)
- javascript面向对象(四)
- 面向对象的扩展设计
- Javascript面向对象扩展库
- Java面向对象编程扩展
- 三十五、面向对象相关扩展
- 成长日记 一 (面向对象设计)
- 面向对象与基于对象
- "基于对象"与"面向对象"
- 面向对象与基于对象
- 面向对象之类与对象
- 课程设计(图书信息管理系统)
- Linux 的 Shell
- PSYoungGen ParNewGeneration DefNewGeneration等名词解释
- 加入外键产生错误码
- easyui之关闭窗口时触发关闭事件
- 四、面向对象 对象扩展与成长
- linux下tar.gz、tar、bz2、zip等解压缩、压缩命令小结
- android shape的使用详解以及常用效果(渐变色、分割线、边框、半透明阴影效果等)
- iOS错误记录
- 会话:追踪长时间的运动轨迹,对运动数据进行分析,用户可以调整并分享会话。
- http协议总结
- 第四章数组和指针(数组)
- NanShan即时通讯 ie6 ie7 ie8 不支持json 终极解放方案
- c/c++ c++ file c++/stl/boost 判断文件目录是否存在