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);
        }
    }///:~
      
  • 相关阅读:
    java线程池
    缓存命中
    dubbo面向服务使用
    ActiveMQ
    创建证书
    struts2的运行原理以及底层的工作机制
    jdbc,mybatis,hibernate各自优缺点及区别
    struts2与springmvc的区别
    linux vi 命令编辑操作
    Linux FTP基本操作命令 ( 序列二 ftp)
  • 原文地址:https://www.cnblogs.com/jiangfeilong/p/10176522.html
Copyright © 2011-2022 走看看