zoukankan      html  css  js  c++  java
  • java 桥接模式

    桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。

    1)适配器:改变已有的两个接口,让他们相容。

    2)桥接模式:分离抽象化和实现,使两者的接口可以不同,目的是分离。

    /**
     * @author liusongwei
     * @Title: Car
     * @ProjectName demohystrix
     * @Description: 定义一个交通工具的接口
     * @date 2018/12/2815:58
     */
    public interface Traffic {
        void byontake(String name);
    }
    /**
     * @author liusongwei
     * @Title: Plane
     * @ProjectName demohystrix
     * @Description: 交通工具之一飞机
     * @date 2018/12/2816:02
     */
    public class Plane implements Traffic {
        @Override
        public void byontake(String name) {
            System.out.println(name + "乘坐飞机去少林寺");
        }
    }
    /**
     * @author liusongwei
     * @Title: Train
     * @ProjectName demohystrix
     * @Description: 交通工具之一火车
     * @date 2018/12/2816:00
     */
    public class Train implements Traffic {
        @Override
        public void byontake(String name) {
            System.out.println(name + "乘坐火车去少林寺");
        }
    }
    /**
     * @author liusongwei
     * @Title: Whois
     * @ProjectName demohystrix
     * @Description: 定义一个抽象类谁乘坐交通工具
     * @date 2018/12/2816:03
     */
    public abstract class Whois {
        private Traffic traffic;
    
        public Whois(Traffic traffic){
            this.traffic = traffic;
        }
    
        public void WhereGoTo(String name){
            traffic.byontake(name);
        }
    }
    /**
     * @author liusongwei
     * @Title: Man
     * @ProjectName demohystrix
     * @Description: 人类
     * @date 2018/12/2816:06
     */
    public class Man extends Whois {
        public Man(Traffic traffic) {
            super(traffic);
        }
    }
    /**
     * @author liusongwei
     * @Title: Demo
     * @ProjectName demohystrix
     * @Description: TODO
     * @date 2018/12/2816:07
     */
    public class Demo {
        public static void main(String[] args){
            Whois whois = new Man(new Train());
            whois.WhereGoTo("张三");
    
            Whois whois2 = new Man(new Plane());
            whois2.WhereGoTo("李四");
    
        }
    }
  • 相关阅读:
    大型项目使用Automake/Autoconf完成编译配置
    用C语言编写Windows服务程序的五个步骤
    RPC的发展历史(本质就是双方定义好协议,传递参数后远程调用)
    libuv和libev 异步I/O库的比较
    zlog 程序日志的库 交叉编译(Linux生成ARM库,观察执行步骤)
    应用服务
    EvnetBus
    this指向
    CPU使用率
    数据量小,创建索引有必要吗
  • 原文地址:https://www.cnblogs.com/mutong1228/p/10192724.html
Copyright © 2011-2022 走看看