zoukankan      html  css  js  c++  java
  • java设计模式7——桥接模式

    java设计模式7——桥接模式

    1、桥接模式介绍

    桥接模式是将抽象部分与它的实现部分分离,使他们都可以独立的变化。它是一种对象结构型模式,又称为柄体模式或接口模式。

    2、解决问题

    2.1、将复杂的组合设计问题转变为可以桥接的组合问题。如电脑的例子,电脑有类型和品牌,两者可以任意组合。

    2.2、没有用设计模式时的示意图

    2.3、使用桥接模式后的示意图

    将这个场景中的两个变化的维度分离,品牌和类型。两者通过桥接进行两两组合。

    3、代码演示:

    3.1、编写品牌的抽象类

    package com.xgp.company.结构性模式.桥接模式;
    
    /**
     * 品牌类
     */
    public interface Brand {
        void info();
    }
    

    3.2、由抽象类诞生出品牌

    苹果:

    package com.xgp.company.结构性模式.桥接模式;
    
    /**
     * 苹果品牌
     */
    public class Apple implements Brand {
        @Override
        public void info() {
            System.out.print("苹果");
        }
    }
    

    联想:

    package com.xgp.company.结构性模式.桥接模式;
    
    public class Laptop extends Computer {
        public Laptop(Brand brand) {
            super(brand);
        }
    
        @Override
        protected void info() {
            super.info();
            System.out.println("笔记本");
        }
    }
    

    3.3、电脑类型的抽象类

    package com.xgp.company.结构性模式.桥接模式;
    
    /**
     * 抽象的电脑类型类
     */
    public abstract class Computer {
    
        //组合:品牌,电脑自带品牌
        protected Brand brand;
    
        public Computer(Brand brand) {
            this.brand = brand;
        }
    
        protected void info() {
            //自带品牌
            brand.info();
        }
    }
    

    3.4、由电脑类型的抽象类诞生实现类

    台式电脑:

    package com.xgp.company.结构性模式.桥接模式;
    
    public class Desktop extends Computer {
        public Desktop(Brand brand) {
            super(brand);
        }
    
        @Override
        protected void info() {
            super.info();
            System.out.println("台式机");
        }
    }
    

    笔记本电脑:

    package com.xgp.company.结构性模式.桥接模式;
    
    public class Laptop extends Computer {
        public Laptop(Brand brand) {
            super(brand);
        }
    
        @Override
        protected void info() {
            super.info();
            System.out.println("笔记本");
        }
    }
    

    3.5、编写测试类,进行桥接

    package com.xgp.company.结构性模式.桥接模式;
    
    public class Test {
        public static void main(String[] args) {
            //苹果笔记本
            Computer computer = new Laptop(new Apple());
            computer.info();
            //联想台式机
            Computer computer12 = new Desktop(new Lenovo());
            computer12.info();
        }
    }
    

    输出结果:

    苹果笔记本
    联想台式机
    

    4、类图示意:

    5、好处分析:

    6、弊端分析:

    7、最佳实现

    8、现已经使用的场景

  • 相关阅读:
    IM客户端Socks 5代理协议应用
    招聘程序员的方法
    Power BI Embedded 与 Bot Framework 结合的AI报表系统
    Surface Dial 与 Windows Wheel UWP应用开发
    如何将 Microsoft Bot Framework 链接至微信公共号
    Mobilize.Net Silverlight bridge to Windows 10 UWP
    使用 Windows10 自定义交互消息通知
    如何使用新浪微博账户进行应用登录验证(基于Windows Azure Mobile Service 集成登录验证)
    NFC 与 Windows Phone 的那点事儿
    Windows Phone 支持中国移动官方支付
  • 原文地址:https://www.cnblogs.com/xgp123/p/12309435.html
Copyright © 2011-2022 走看看