Java中的类适配器模式
“移动”是一个界面,有一种方法可以让你跳1英尺高。Java中的类适配器模式,java,oop,design-patterns,adapter,Java,Oop,Design Patterns,Adapter,“移动”是一个界面,有一种方法可以让你跳1英尺高。 mario是一个具有方法特定跳跃(int-feets)的类,它允许您跳到1英尺以上。 myAdapter的实现应如下所示: 声明变量int-feet 通过声明和初始化公共void jump()实现接口移动 使用specificJump(Foots)功能跳到int Foots的高度 因此,当尝试调用jump()时,实际上将执行specificJump(feet) 问题:为了执行specificJump(int-feet),我们首先需要调用jump
mario是一个具有方法特定跳跃(int-feets)的类,它允许您跳到1英尺以上。
myAdapter的实现应如下所示:
但是specificJump(int-feet)需要一个参数,是否可以像我一样在myAdapter中声明int-feet?
我的问题是,当您必须在没有参数的情况下调用jump()时,如何获取int-feets值?(使用类适配器模式) 空跳()//跳高1英尺 如果这是接口契约,那么实现就不应该违反它 允许跳跃高度超过1英尺 因此,您可能会:
类MovableMario扩展了Mario实现移动{
@凌驾
公共跳转{
特定跳跃(1);
}
}
无论哪位客户需要跳跃特定高度,都可以使用mario.specificJump(feet)
请注意,设计非常有限,理想情况下,适配器将以装饰器的形式出现,并将其委托给内部
Mario
。推测,feet
的值将传递到myAdapter
的构造函数中,或通过setter方法进行设置。什么是newMovement
?应该是myAdapter Extendes mario
?是的,你说得对,谢谢,只是更改了它。老实说,这个设计似乎没有任何意义。如果接口的契约定义跳转高度不应超过1英尺,那么让实现违反该契约是没有意义的。此外,您可以在mario
中覆盖jump
,并在默认情况下跳到mario需要跳的高度,然后还可以使用参数化的jump(int-feet)
重载。那是作业吗?你到底想解决什么问题?
interface movement{
void jump(); //Jump is 1 Feet high
}
class mario(){
void specificJump(int feet); //Use variable feet to jump higher than 1 Feet
}
public class myAdapter extends mario implements movement{
int feet;
public void jump(){
specificJump(feet);
}
}