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

  • 相关阅读:
    378. Kth Smallest Element in a Sorted Matrix
    295. Find Median from Data Stream
    857. Minimum Cost to Hire K Workers
    373. Find K Pairs with Smallest Sums
    767. Reorganize String
    无序列表
    有序列表
    缩写
    设计者详细信息
    强调
  • 原文地址:https://www.cnblogs.com/betterwgo/p/15229623.html
Copyright © 2011-2022 走看看