zoukankan      html  css  js  c++  java
  • 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(); } }
  • 相关阅读:
    LG P4213【模板】杜教筛(Sum)
    JZOJ 3447.摘取作物
    JZOJ 3448.公路维护
    JZOJ 4496. 【GDSOI 2016】第一题 互补约数
    jmeter的参数化之函数助手的使用
    window10平台运行jenkins.war的插件安装失败的解决
    jmeter的断言之响应断言的使用
    在虚拟机里安装完mysql后,开启root远程登录权限
    Word Excel PPT 2016从新手到高手
    Oracle 如何停止正在后台执行的impdp/expdp 任务
  • 原文地址:https://www.cnblogs.com/sx-bj-srr/p/bridge.html
Copyright © 2011-2022 走看看