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

    桥模式:将某个问题抽象的不同形式分别与该问题的具体实现部分相分离,使他们都可以独立变化,并能够动态结合。类图如下:

          例如电视厂商海尔,长虹生产21寸,29寸电视机。从这里要将它们分离出来,就用到桥模式。电视机与电视机生产厂商挂桥,从而,分离出不同厂商的实现,与不同电视机型号的实现.

    从上图可以看出,将实际抽象分离出来。

    看下代码

    创建电视机

    1 public abstract class Television {  
    2     //电视厂商  
    3     protected TelevisionMaker televisionMaker;  
    4     //收看电视  
    5     abstract public void teleview(TelevisionMaker televisionMaker);  
    6 } 

    创建生产厂商

    1 public abstract class TelevisionMaker {  
    2     abstract public void produce();  
    3 }  

    电视机的型号,即继承电视机类

    1 public class Inch21 extends Television{  
    2       
    3     public void teleview(TelevisionMaker televisionMaker) {  
    4         System.out.println("21寸电视");  
    5     }  
    6   
    7 }  
    1 public class Inch29 extends Television{  
    2       
    3     public void teleview(TelevisionMaker televisionMaker) {  
    4         System.out.println("29寸电视");  
    5     }  
    6   
    7 }  

    下面是不同厂商,即继承生产厂商

     1 public class ChangHong extends TelevisionMaker{  
     2   
     3     public ChangHong(){  
     4         System.out.println("长虹厂商");  
     5     }  
     6       
     7     public void produce() {  
     8         System.out.println("长虹厂商");  
     9     }  
    10 }  
     1 public class Haier extends TelevisionMaker{  
     2     public Haier(){  
     3         System.out.println("海尔厂商");  
     4     }  
     5       
     6     public void produce() {  
     7         System.out.println("海尔厂商");  
     8     }  
     9   
    10 } 

    这样就使用了桥模式,将原本繁杂的系统分离开来。如果根据需求变动,要增加电视机生产型号或者电视机生产厂商,只需要实现相对应的抽象类即可。

    这样,我们也可以根据用户的需要,得到他所需要的电视机,如长虹厂商出厂的29寸电视机。

    测试代码如下:

    1 public class Client {  
    2   
    3     public static void main(String[] args) {  
    4         // TODO Auto-generated method stub  
    5         Inch29 i = new Inch29();  
    6         i.teleview(new ChangHong());  
    7     }  
    8 }  

     结果:

           长虹厂商
           29寸电视

  • 相关阅读:
    程序输出小学四则运算表达式,支持真分数四则运算
    自我介绍
    一维数组求最大子数组的和(首位相邻32位)
    一维数组子数组求最大和
    第三周进度条
    第三周总结PSP日志文件
    四则运算<3>单元测试
    四则运算<3>
    30道四则运算<2>单元测试
    构建之法阅读笔记02
  • 原文地址:https://www.cnblogs.com/icooper/p/4553833.html
Copyright © 2011-2022 走看看