Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的类适配器模式_Java_Oop_Design Patterns_Adapter - Fatal编程技术网

Java中的类适配器模式

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

“移动”是一个界面,有一种方法可以让你跳1英尺高。
mario是一个具有方法特定跳跃(int-feets)的类,它允许您跳到1英尺以上。
myAdapter的实现应如下所示:

  • 声明变量int-feet
  • 通过声明和初始化公共void jump()实现接口移动
  • 使用specificJump(Foots)功能跳到int Foots的高度
  • 因此,当尝试调用jump()时,实际上将执行specificJump(feet)

    问题:为了执行specificJump(int-feet),我们首先需要调用jump()。
    但是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); 
        }
    }