zoukankan      html  css  js  c++  java
  • Java中的代理

    一.什么是代理?

    代理就是在一个类的内部维护了一个对象的引用,使用这个对象引用来完成相应的功能。

    代理和组合和继承一样仅仅是一种设计模式。

    二.代理和组合以及继承的区别

    代理既能完成组合的将一个类至于另外一个类中,同时还能像继承一样暴露其所有的方法,并在原来的方法上进行增加。

     看一个例子:

    我们现在需要一个汽车类,但是汽车的零部件太多,我们需要对其进行一个拆分。

    那我们可以设定出一个发动机类,然后我们在汽车类中去代理这个发动机类。

    代码如下:发动机类:

    package com.cjm.reusable_class;
    
    public class Engine {
        private int v;
        private char f;
        
        public void start() {
            System.out.println("引擎发动!");
        }
    
        public void addspeed() {
            v++;
        }
    
        public void removespeed() {
            v--;
        }
    
        public void turnleft() {
            System.out.println("发动机左转");
        }
    
        public void turnrigth() {
            System.out.println("发动机右转");
        }
    }

    汽车类:

    package com.cjm.reusable_class;
    
    /**
     * 在汽车类中去代理发动机类
     * 
     * @author 小明
     *
     */
    public class Car {
        private Engine e = new Engine();// 将引擎对象放置到汽车类中
    
        public void start() {
            e.start();
            System.out.println("汽车开动");
        }
    
        public void addspeed() {
            e.addspeed();
            System.out.println("汽车加速,并且滴滴滴");
        }
    
        public void removespeed() {
            e.removespeed();
            System.out.println("汽车减速,并且滴滴滴");
        }
    
        public void turnleft() {
            System.out.println("汽车在打左转向灯,并且使");
            e.turnleft();
    
        }
    
        public void turnrigth() {
            System.out.println("汽车在打右转向灯,并且使");
        }
    
        public static void main(String[] args) {
            Car car = new Car();
            car.start();
            car.addspeed();
            car.turnleft();
        }
    
    }

    在汽车类中我们可以直接调用了发动机的方法,同样我们也可以获得汽车的字段。

    这样的设计模式就是代理,相比于继承和组合这更加的简洁和直观。

  • 相关阅读:
    P1371 NOI元丹
    最小费用最大流
    City Game UVALive
    P2389 电脑班的裁员
    P1959 遗址_NOI导刊2009普及(6)
    P2700 逐个击破
    P1630 求和
    P4310 绝世好题
    java常用类:1。包装类(以Integer类为例)2.String类 3.StringBuffer
    java异常,异常处理,异常类 关键字:throws 和 throw 自定义的异常类
  • 原文地址:https://www.cnblogs.com/SAM-CJM/p/9361845.html
Copyright © 2011-2022 走看看