zoukankan      html  css  js  c++  java
  • java 代理 agency

    java并没有对其提供直接的支持,这是继承和组合的中庸之道,因为我们将一个成员对象置于所要构造的类中(组合),但与此同时我们在新类中暴露了该成员的所有方法(就像继承),使用代理时可以拥有更多的控制力,因为我们可以选择提供在成员对象中的方法的某个子集;

    package object;
    
     class SpaceShipControls{
        void up(int velocity){}
        void down(int velocity){}
        void left(int velocity){}
        void right(int velocity){}
        void forward(int velocity){}
        void back(int velocity){}
        void turboBoost(){}
    }
     /*//继承 extends
    public class SpaceShip extends SpaceShipControls{
        private String name;
        public SpaceShip(String name) {this.name = name    ;}
        public String toString(){return name;}
        public static void main(String[] args)
        {
            SpaceShip protector = new SpaceShip("NSEA Protector");
            protector.forward(100);
        }
    }*/
    //代理 delegation
    public class SpaceShipDelegation{
        private String name;
        private SpaceShipControls controls = new SpaceShipControls();
        public SpaceShipDelegation(String name)
        {
            this.name = name;
        }
        //Delegated methods
        public void back(int velocity){ //使用代理时可以拥有更多的控制力,因为我们可以选择提供在成员对象中的方法的某个子集;
            controls.back(velocity);    //我们可以只提供back这一个方法
        }
        public void down(int velocity)
        {
            controls.down(velocity);
        }
        public void forward(int velocity)
        {
            controls.forward(velocity);
        }
        public void left(int velocity)
        {
            controls.left(velocity);
        }
        public void right(int velocity)
        {
            controls.right(velocity);
        }
        public void turboBoost()
        {
            controls.turboBoost();
        }
        public void up (int  velocity)
        {
            controls.up(velocity);
        }
        public static void main(String[] args)
        {
            SpaceShipDelegation protector =
                    new SpaceShipDelegation("NSEA Protector");
            protector.forward(100);
        }
    }///:~
      
  • 相关阅读:
    构建之法第二次作业
    wav音频的剪切
    构建之法结对编程
    模拟数据库事务实现转账
    Quirks模式是什么?它和Standards模式有什么区别
    CSS都有哪些选择器?
    简述渐进增强和优雅降级之间的不同?
    市面上浏览器的内核分别是什么?有哪些?
    html与xhtml有什么区别?
    关于对WEB标准以及W3C的理解与认识问题
  • 原文地址:https://www.cnblogs.com/jiangfeilong/p/10176522.html
Copyright © 2011-2022 走看看