zoukankan      html  css  js  c++  java
  • 《JAVA与模式》之桥接模式

      桥接模式是一种结构型模式,它主要应对的是:由于实际的需要,某个类具有两个或两个以上的维度变化,如果只是用继承将无法实现这种需要,或者使得设计变得相当臃肿。

          桥接模式的做法是把变化部分抽象出来,使变化部分与主类分离开来,从而将多个维度的变化彻底分离。最后,提供一个管理类来组合不同维度上的变化,通过这种组合来满足业务的需要。

    举个例子,对于笔记本的CPU评测,当安装Intel CPU的时候 评测分数比较高,而安装AMD CPU的时候,则评测分数相对低一些,这个是一唯影响,而配合上电脑品牌,就是二维影响

    先看下面的代码

     1 interface CpuAbility{
     2     
     3      String abilityCpu();
     4 }
     5 
     6 class AdmCpu implements CpuAbility{
     7 
     8     public String abilityCpu() {
     9         // TODO Auto-generated method stub
    10         return "系能一般";
    11     }
    12 }
    13 class IntelCpu implements CpuAbility{
    14     public String abilityCpu() {
    15         // TODO Auto-generated method stub
    16         return "系能比较牛";
    17     }
    18 }
    19 
    20 abstract class AbstractComputer{
    21     
    22     CpuAbility cpuAbility;
    23     
    24     public AbstractComputer(CpuAbility cpuAbility){
    25         this.cpuAbility=cpuAbility;
    26         
    27     }
    28     
    29     
    30     public abstract void checkPcAbility();
    31     
    32 }
    33 
    34 class LenevoComputer extends AbstractComputer{
    35 
    36     public LenevoComputer(CpuAbility cpuAbility) {
    37         super(cpuAbility);
    38         // TODO Auto-generated constructor stub
    39     }
    40 
    41     @Override
    42     public void checkPcAbility() {
    43         System.out.println("华硕笔记本CPU性能"+super.cpuAbility.abilityCpu());
    44     }
    45     
    46 }
    47 class IswComputer extends AbstractComputer{
    48     
    49     public IswComputer(CpuAbility cpuAbility) {
    50         super(cpuAbility);
    51         // TODO Auto-generated constructor stub
    52     }
    53     
    54     @Override
    55     public void checkPcAbility() {
    56         System.out.println("IBM笔记本CPU性能"+super.cpuAbility.abilityCpu());
    57     }
    58     
    59 }

    执行代码并输出

    1 CpuAbility ability =new IntelCpu();
    2 AbstractComputer computer =new LenevoComputer(ability);
    3 computer.checkPcAbility();
    4 ability =new AdmCpu();//华硕笔记本CPU性能系能比较牛
    5 computer =new IswComputer(ability);
    6 computer.checkPcAbility();//IBM笔记本CPU性能系能一般

    可以看到,通过对象组合的方式,Bridge 模式把两个角色之间的继承关系改为了耦合的关系,从而使这两者可以从容自若的各自独立的变化,这也是Bridge模式的本意。

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

    结构如下图所示:

    参考地址:

    http://blog.csdn.net/jason0539/article/details/22568865

    http://hi.baidu.com/isswangqing/item/126e4318bd99a708e65c36b3

    http://blog.163.com/xiaokangzhijia@126/blog/static/1659548562010111843618596/

    http://www.blogjava.net/wangle/archive/2007/04/25/113545.html

  • 相关阅读:
    Vue Cli 3.x项目如何部署到IIS子站点下
    IntelliJ IDEA 2018.3.2无法正常输入字符问题解决方案
    解决macOS git clone Azure DevOps提示身份认证失败问题
    JDBC driver for MySQL连接提示"The connection property 'zeroDateTimeBehavior' acceptable values are: 'CONVERT_TO_NULL', 'EXCEPTION' or 'ROUND'. The value 'convertToNull' is not acceptable."解决方案
    dbeaver导出MySQL的架构提示"IO Error: Utility 'mysqldump.exe' not found in client home 'MySQL Connector/Net"解决方案
    Git 常用命令和 Git Flow 梳理
    gitflow工作流程基本命令使用
    RocketMQ学习分享
    解决docker中使用nginx做负载均衡时并发过高时的一些问题
    Tomcat中session共享问题的简单解决办法
  • 原文地址:https://www.cnblogs.com/draem0507/p/3794530.html
Copyright © 2011-2022 走看看