当前页面: 开发资料首页 → J2SE 专题 → 关于类的设计
关于类的设计
摘要: 关于类的设计
假设我现在想设计一个"车"类,和一个"人"类,我需要一个方法,就是"人开车",请问这个方法应该放在哪个类中比较好,当然两个类中都有办法实现,但总有一种方案会实现的比较完美,请大家说明为什么这么设计的原因...
你自己也说了嘛
"人开车"当然放到"人"类啦
“人开车”是谁的动作啊?
是“人”的,那就“人”去实现。
当然是人类了
你可以这样想 "人类"是要"开"是一个动作 "车类"要"移动"是另外一个动作
当"人类"的"开"的动作 作用在"车类" 的动作上时 车才移动
是比较绕 呵呵 实现的方法有好多 看你怎么想啦
use-a
如果把方法写在"人"类上,那不是一但有一个对象需要人来操作就得在"人"上面加个方法吗,如果放在"车"类里面,一旦我需要什么方法我就接收人的引用不就行了,那样想要生成"飞机"类/"电视"类等等,不需要直接改"人"这个类就行了
当然是人类中了,人是主语呀
人类中
如果把方法写在"人"类上,那不是一但有一个对象需要人来操作就得在"人"上面加个方法吗,如果放在"车"类里面,一旦我需要什么方法我就接收人的引用不就行了,那样想要生成"飞机"类/"电视"类等等,不需要直接改"人"这个类就行了
__________
你的这段话前后矛盾。方法写在车类中,那么飞机就和人没有关系,你就还得在飞机类写个方法去开飞机,但是你只要写在人类中,将飞机作为参数传进去,只要接口一样不就方便了?
飞机类 车类 都有个方法run()
然后人类 有个方法去调用run()
interface Vehicle{
void run();
...
}
interface Man{
void drive(Vehicle aVehicle);
}
开车当然写在人类里了
但是车类里应该有个车启动
人类。。。
就像是人吃饭,当然放在人里了,总不能放在饭里吧。。。
emin_lee() 的不错。
interface Vehicle{
void run();
...
}
interface Man{
void drive(Vehicle aVehicle);
void drive(Plane aPlane);
void drive(Tank aTank);
...
}
interface Vehicle{
void run();
...
}
class Plane implements Vehicle{
public void run(){}
}
class Tank implements Vehicle{
public void run(){}
}
interface Man{
void drive(Vehicle aVehicle);
...
}
应该用人类包含ABSTRACT的驾驶方法,然后实例化一个司机的对象,覆盖那个驾驶的方法...应该可以吧...
如果人开车 那就是主动式 在人的类中设计一个接口,把车作为参数
如果相反 那就是被动式 在车的接口中设计一个接口 同样可以实现
开车当然写在人类里了
但是车类里应该有个车启动
人类
但是要实例化一个车类
同意接口或者ABSTRACT的方法,统一接口,扩充性好