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(); } }
  • 相关阅读:
    寻找 身边的幸福
    XML指南——XML 确认
    你最隐秘的性格在哪?
    不用邀请也可以申请GMail的方法
    XMLDOM对象方法:Document对象方法
    XPath函数
    XML指南——微软的XML解析器
    简/繁体互相转换
    WEB程序开发常用小工具包
    职业规划之电脑程序员的蘑菇定律
  • 原文地址:https://www.cnblogs.com/sx-bj-srr/p/bridge.html
Copyright © 2011-2022 走看看