美文网首页
委托模式

委托模式

作者: Lucksheep | 来源:发表于2019-05-15 15:28 被阅读0次

    一、委托模式简介

    1. (注:)不属于 23 种设计模式之一,是面向对象设计模式中常用的一种模式。
    2. 特点:持有被委托人的引用,不关心过程,只关心结果。
    3. 归类:行为型模式
    4. 核心:可以理解为静态代理和策略模式一种特殊的组合。

    二、与代理模式的区别

    1. 代理模式:注重过程
    2. 委托模式:注重结果

    三、与策略模式的区别

    1. 注重的外部扩展
    2. 注重的是内部的灵活和复用

    四、实战演练

    demo事例:老板给经理安排了A需求,经理接了,然后安排给程序员1去开发;

    1. 开发需求的接口 DevelopmentNeeds.java
    
    package com.demo.delegate;
    /**
     * 开发需求
     */
    public interface DevelopmentNeeds {
        public void doing(String needsName);
    }
    
    
    1. 实现改需求的两个苦逼的程序员 DevelopmentOne.java
    
    package com.demo.delegate;
    
    /**
     * 实现改需求的两个苦逼的程序员
     */
    public class DevelopmentOne implements DevelopmentNeeds{
        @Override
        public void doing(String needsName) {
            System.out.println("我是程序员1号,我在苦逼的开发:"+needsName+"需求");
        }
    }
    
    

    DevelopmentTwo .java

    
    package com.demo.delegate;
    public class DevelopmentTwo implements DevelopmentNeeds{
        @Override
        public void doing(String needsName) {
            System.out.println("我是程序员2号,我在苦逼的开发:"+needsName+"需求");
        }
    }
    
    
    1. 根据功能安排某个程序员做事情的经理 Director .java
    
    package com.demo.delegate;
    import java.util.HashMap;
    import java.util.Map;
    /**
     * 根据功能安排某个程序员做事情的经理
     */
    public class Director implements  DevelopmentNeeds{
        private Map<String,DevelopmentNeeds> needs = new HashMap<String,DevelopmentNeeds>();
        public Director() {
            needs.put("洗车",new DevelopmentOne());
            needs.put("优惠券",new DevelopmentTwo());
        }
        @Override
        public void doing(String needsName) {
            needs.get(needsName).doing(needsName);
        }
    }
    
    
    1. DelegateTest.java
    
    package com.demo.delegate;
    public class DelegateTest {
        public static void main(String[] args) {
            new Director().doing("优惠券");
        }
    }
    
    

    总结

    1. 功劳是经理的,具体做事的是程序员的

    相关文章

      网友评论

          本文标题:委托模式

          本文链接:https://www.haomeiwen.com/subject/elgpaqtx.html