• JAVA设计模式之桥接模式(bridge)


    桥接模式:

       分离抽象与具体实现,让他们可以独自发展,防止类爆炸

     场景:

       过年走亲戚是我们中国人传统的习俗,走亲戚那就少不了要买东西(苹果,牛奶等等),这些具体的东西就是具体的类

       蒙牛牛奶,有机苹果,有机,蒙牛这些就是抽象,东西各种各样,随着制造业以及人类的智慧这些抽象也在不断发展

       将这些抽象与具体的类通过一个桥梁连接起来就是桥接模式。

    问题:我走丈母娘家想送一些有机苹果,该怎么实现呢,请看代码

    1、抽象东西类
    package com.srr.pd.bridge;
    
    /**
     * 东西,抽象类
     */
    abstract public class Thing {
        Bridge bridge;
    }

    2、蒙牛

    package com.srr.pd.bridge;
    
    /**
     * 蒙牛
     */
    public class Mengniu extends Thing{
        public Mengniu(Bridge bridge){
            this.bridge = bridge;
        }
    
        @Override
        public String toString() {
            return "Mengniu{} " + this.bridge.toString();
        }
    }

    3、有机

    package com.srr.pd.bridge;
    
    /**
     * 有机的
     */
    public class Organic extends Thing{
        public Organic(Bridge bridge){
            this.bridge = bridge;
        }
    
        @Override
        public String toString() {
            return "Organic{} " + this.bridge.toString();
        }
    }

    4、桥接类

    package com.srr.pd.bridge;
    
    /**
     * 桥接
     */
    public class Bridge {
        @Override
        public String toString() {
            return "Bridge{}";
        }
    }

    5、苹果

    package com.srr.pd.bridge;
    
    /**
     * 苹果
     */
    public class Apple extends Bridge{
        @Override
        public String toString() {
            return "Apple{}";
        }
    }

    6、牛奶

    package com.srr.pd.bridge;
    
    /**
     * 牛奶
     */
    public class Milk extends Bridge{
        @Override
        public String toString() {
            return "Milk{}";
        }
    }

    7、测试类

    package com.srr.pd.bridge;
    
    public class T {
    
        /**
         * 走亲戚
         */
        private static void WalkRelatives(){
            Thing thing = new Organic(new Apple()); //有机苹果
    //给东西 give(
    new MotherOfWife(),thing); } /** * 给东西 * @param m * @param thing */ private static void give(MotherOfWife m, Thing thing) { m.get(thing); } static class MotherOfWife { /** * 收到 */ public void get(Thing thing){ System.out.println(thing.toString() +" geted"); } } public static void main(String[] args) { WalkRelatives(); } }
  • 相关阅读:
    关于VGG网络的介绍
    nvidia-docker 安装
    test
    ARTS-S EN0002-London HIV patient's remission spurs hope for curing AIDS
    ARTS-S EN0001-In tech race with China, US universities may lose a vital edge
    ARTS-S Why do India and Pakistan keep fighting over Kashmir?
    ARTS-S sed指定行添加
    ARTS-S linux查看进程打开的文件数
    ARTS-S centos查看端口被哪个进程占用
    ARTS-S centos修改hostname
  • 原文地址:https://www.cnblogs.com/sx-bj-srr/p/bridge.html
Copyright © 2020-2023  润新知