zoukankan      html  css  js  c++  java
  • 案例分析:设计模式与代码的结构特性(桥接模式)

    基本介绍:

    1)桥接模式(Bridge模式)是指:将实现与抽象放在两个不同的类层次中,使两个层次可以独立改变。

    2)是一种结构型设计模式。

    3)Bridge模式基于类的最小设计原则,通过使用封装、聚合及继承等行为让不同的类承担不同的职责。它的主要特点是把抽象(Abstraction)与行为实现(Implementation)分离开来,从而可以保持各部分的独立性以及应对他们的功能扩展。

    模式结构:

     AbstractBike:抽象类

     MountatinBike/RoadBike:扩充抽象类

     InterfaceBrand:实现类接口

     MeridaBrand/GiantBrand:具体实现类

     

    案例分析:

    典型实现类接口代码:
    public interface InterfaceBrand {
       public void showBrand();
    }
    典型的抽象类代码:
    public abstract class AbstractBike {
       InterfaceBrand brand;//自行车的品牌
       String color;//自行车的颜色
       public AbstractBike(InterfaceBrand brand, String color) {
          this.brand = brand;
          this.color = color;
       }
       public abstract void print();
    }
    典型的扩充抽象类代码:
    public class MountatinBike extends AbstractBike {
       public MountatinBike(InterfaceBrand brand, String color) {
          super( brand, color);
       }
       public void print(){
          System.out.println("属性:山地车");
          System.out.println("颜色:"+color);
          brand.showBrand();
          System.out.println("---------------");
       }
    }
    典型的接口的实现的代码:
    public class GiantBrand implements InterfaceBrand {
       @Override
       public void showBrand() {
          
          System.out.println("-品牌:捷安特");
       }
    }

    模块抽象封装的方法:

    在该场景中,如果要增加品牌的种类,只需要增加接口的实现即可,可扩展性强;如果增加车子种类(比如说旅行车、城市车),只需要增加抽象类的实现,实现了抽象和实现部分的分离。

    引入该设计模式后对系统架构和代码结构带来了的好处:

    实现了抽象和实现部分的分离,从而极大的提供了系统的灵活性,让抽象部分和实现部分独立开来,这有助于系统进行分层设计,从而产生更好的结构化系统。

    对于系统的高层部分,只需要知道抽象部分和实现部分的接口就可以了,其它的部分由具体业务来完成。

    桥接模式替代多层继承方案,可以减少子类的个数,降低系统的管理和维护成本。

    其中用到的多态机制:

    多态三个必要条件:继承、方法重写、父类引用指向子类对象。

    本案例中RoadBike、MountatinBike继承父类(抽象类)AbstractBike,对父类方法print()进行重写。代码如下:

    InterfaceBrand brand1=new GiantBrand();
    
    InterfaceBrand brand2=new GiantBrand();
    
    AbstractBike bike1=new MountatinBike(brand1,"黑色");
    
    AbstractBike bike2=new RoadBike(brand1,"红色");
    
    bike1.print();
    
    bike2.print();

    分析各个模块的内聚度和模块之间的耦合度:

    桥接模式的引入增加了系统的理解和设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象进行设计和编程。

    将抽象化与实现化解耦,使得二者可以独立变化,通过对象组合的方式,Bridge 模式把两个角色之间的继承关系改为了耦合的关系,从而使这两者可以从容自若的各自独立的变化,这是Bridge模式的本意,从而提高内聚度、降低藕合度。

    源码链接:

    https://github.com/GoodbyeLullaby/BridgeDemo

  • 相关阅读:
    按钮,文本框
    d01
    第一天,对于课程和工作的了解
    javaweb概念性知识
    Jdbc概念性知识
    连接数据库,和数据增删改
    oracle基础概念性知识
    面向对象java知识汇总题
    javaweb
    date日期
  • 原文地址:https://www.cnblogs.com/smyhrps/p/12005582.html
Copyright © 2011-2022 走看看