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");
    }

  • 相关阅读:
    1、数据加密基础
    cookie——小甜品
    使用SpringBoot开发REST服务
    从编辑距离、BK树到文本纠错
    360影视视频下载
    从Trie树到双数组Trie树
    使用websocket-sharp来创建c#版本的websocket服务
    OFFICE 文档转换为html在线预览
    IDEA+PHP+XDebug调试配置
    HTML5录音控件
  • 原文地址:https://www.cnblogs.com/betterwgo/p/15229623.html
Copyright © 2011-2022 走看看