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

  • 相关阅读:
    c++单例设计模式---17
    c++友元函數---16
    c++const关键字---15
    c++浅拷贝和深拷贝---14
    linux shell 基本语法
    Linux静态库生成
    alsa wav
    Android Butterknife使用方法总结 IOC框架
    利用cglib给javabean动态添加属性,不用在建VO
    钢铁雄心三 通过事件做修改器
  • 原文地址:https://www.cnblogs.com/betterwgo/p/15229623.html
Copyright © 2011-2022 走看看