zoukankan      html  css  js  c++  java
  • 设计模式之 代理模式

    代理模式指为对象提供一种通过代理的方式来访问并控制该对象行为的方法。在客户端不适合或者不能够直接引用一个对象时,可以通过该对象的代理对象来实现对该对象的访问。

    image

    (1)定义原类

    public interface Company{
        void findWorker(String title);
    }
    
    public class HR implements Company{
        private final static Log logger = LogFactory.getLog(this.getClass());
    
        @Override
        public void findWorker(String title){
            logger.info("i need find a worker,title is: "+title);
        }
    }

    (2)定义Proxy

    public class Proxy implements Company{
        private final static Log logger = LogFactory.getLog(this.getClass());
        private HR hr;
        public Proxy(){
            super();
            this.hr = new HR();
        }
    
        @Override
        public void findWorker(String title){
            hr.findWorker(title);
            // 通过猎头找候选人
            String worker = getWorker(title);
            logger.info("find a worker by proxy,worker name is" + worker);
        }
    
        private String getWorker(String title){
            Map<String,String> workerList = new HashMap<>(){
                {put("java","张三");put("python","李四");put("Php","王五");}
            };
            return workerList.get(title);
        }
    }

    以上定义一个代理类Proxy,用来帮助企业寻找合适的候选人。其中Proxy继承了Company并持有HR对象,在其HR发出指令招人后,由代理完成具体的寻找候选人工作并将找到的候选人提供给公司。

    (3)使用代理模式

    public static void main(String[] args){
        Company company = new Proxy();
        company.findWorker("java");
    }

  • 相关阅读:
    Golang Channel用法简编
    一个有关Golang变量作用域的坑
    Goroutine是如何工作的
    Go语言是如何处理栈的
    Go与C语言的互操作
    Lua虚拟机初始化
    lua 函数调用 -- 闭包详解和C调用
    c++对象导出到lua
    nginx缓存设置proxy_cache
    golang中map并发读写问题及解决方法
  • 原文地址:https://www.cnblogs.com/betterwgo/p/15229623.html
Copyright © 2011-2022 走看看