java 接口(interface)和面向对象的详情 (代理模式)
发布日期:2021-06-30 15:37:27 浏览次数:2 分类:技术文章

本文共 2671 字,大约阅读时间需要 8 分钟。

package com.day30.test;

//服务器类的例子:

public class Test {

    public static void main(String[] args) {
        System.out.println("接口的体现 代理模式");
        
        //主要还是利用 接口和多态的设计 实现的
       //声明的是真是Server
        Server server =new Server();
        //把真是的Server扔进设计好的代理类中  利用了多态
        ProxyServer proxyServer= new ProxyServer(server);
        // 利用面向对象多态形式 传入的是哪个对象 实际他调用的是哪个对象的方法
        proxyServer.brwse();    
        //为什么不知道用Server 直接调用brwse 
        //因为在调用这个服务器的方法 之前也许需要做别的事  
        // 比如 互联网之前的检测 等等 所以把这个声明的服务器类传入代理类 执行一些别的方法
        // 然后顺带执行这个服务器的方法
        // 为什么不直接在这个服务器器把这个 互联网之前的检测 的方法定义好 ?
        // 答: 扩展性强
        // 比如现在又有一台服务器类 也需要做 互联网之前的检测 难道要在这个服务器类中再写一遍?
        // 所以说 可以把这些公共行为的方法 都可以写在一个类中 
        // 然后 哪个类想使用 就可以通过面向对象多态的形式 执行这个公共类中的方法 
        
        // 每针对一套的接口类 要设计一个代理类 
        // 这个是服务器操作一套代理类设计
        // 如果现在有个买菜的接口定义
        // 你不想直接去买 就可以根据买菜这一套 声明一个买菜的代理类 
        // 把你传入买菜代理类中 然后让这个代理类去执行 你想买菜的这个操作 也许买菜之前要有别的操作
        // 比如 检测 金钱是否充足 
    }

}

//网络

interface NetWork{
    void brwse();
}

//被代理类

class Server implements NetWork{

    @Override

    public void brwse() {
        // TODO Auto-generated method stub
        System.out.println("真是的服务器访问网络");
        
    }
    
}

//代理类

class ProxyServer implements NetWork{
    private NetWork work;
    
    public ProxyServer(NetWork work) {
        this.work=work;
    }
    
    void check(){
        System.out.println("互联网之前的校验");
    }

    @Override

    public void brwse() {
        // TODO Auto-generated method stub
        check();
        work.brwse();
        
    }
    
}

 

 

package com.day30.test;

//经纪人和明星的例子:

// 练习以下接口和多态的形式
public class StaticProxy {
   public static void main(String[] args) {
    Proxy proxy=new Proxy(new Actor());
    proxy.confer();
    proxy.signContract();
    proxy.bookTick();
    proxy.sing();
    proxy.takeMoney();
}
    
}

//声明一个接口 

//明星要做的事情
interface Star{
    void confer(); //面谈
    void signContract(); //签合同
    void bookTick(); //订票
    void sing();  //唱歌
    void takeMoney(); //收钱
}

class Actor implements Star{

    @Override

    public void confer() {
        // TODO Auto-generated method stub
        
    }

    @Override

    public void signContract() {
        // TODO Auto-generated method stub
        
    }

    @Override

    public void bookTick() {
        // TODO Auto-generated method stub
        
    }

    @Override

    public void sing() {
        // TODO Auto-generated method stub
        System.out.println("明星自己唱歌!!!");
        
    }

    @Override

    public void takeMoney() {
        // TODO Auto-generated method stub
        
    }
    
}

class Proxy implements Star{

    private Actor actor;
    
    public Proxy(Actor actor) {
        // TODO Auto-generated constructor stub
        this.actor=actor;
    }

    @Override

    public void confer() {
        // TODO Auto-generated method stub
        System.out.println("经纪人面谈");
        
    }

    @Override

    public void signContract() {
        // TODO Auto-generated method stub
        System.out.println("经纪人签合同");
        
    }

    @Override

    public void bookTick() {
        // TODO Auto-generated method stub
        System.out.println("经纪人订票");
    }

    @Override

    public void sing() {
        // TODO Auto-generated method stub
        actor.sing();
        
    }

    @Override

    public void takeMoney() {
        // TODO Auto-generated method stub
        System.out.println("经纪人收钱");
        
    }
    
}
 

转载地址:https://jsonll.blog.csdn.net/article/details/108458493 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:JAVA 8 接口新特性(interface)
下一篇:JAVA 接口(interface) 示例与讲解 详情

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2024年04月30日 18时27分29秒