鱼C论坛

 找回密码
 立即注册
查看: 2046|回复: 0

java设置模式之桥梁模式

[复制链接]
发表于 2015-1-27 15:02:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
桥梁模式是为了弥补继承的缺陷! 大家知道,继承有一个缺陷就是它的耦合性比较强,所以,桥梁模式就解决了这个问题! 这使得对象之间有很弱的关联性,很好的扩展性;我们以公司为例先看一下图:

2015-01-27 14:46:25 的屏幕截图.png

从图中可以看出,corp是公司的抽象,而不管是什么公司,都会有产品的,所以poduct是产品的抽象;
corp类的下面有两个类,也就是两个公司,poduct类的下面也有两个类,也就是产品的类;
公司的最终目的就是赚钱,所以在corp里面定义一个赚钱的方法:
  1. public abstract class Corp
  2. {
  3.    private Product product;
  4.    public Corp(Product product)
  5.    {
  6.       this.product = product;
  7.    }

  8.    //赚钱
  9.    public void makeMoney()
  10.    {
  11.       this.product.beProducted();
  12.       this.product.beSelled();
  13.    }
  14. }
复制代码
那赚钱的话,使用产品去赚钱的,所以还得来一个product:


  1. public abstract class Product
  2. {
  3.    //不管是什么产品它总是能被生产出来
  4.    public abstract void beProducted();
  5.    //生产出来的东西,一定要销售出去
  6.    public abstract void beSelled();
  7. }
复制代码


然后就是继承corp的两个公司了:


  1. public class HouseCorp extends Corp
  2. {
  3.     //定义传递一个house产品进来
  4.     public HouseCorp(House house)
  5.     {
  6.        super(house);
  7.     }

  8.     //赚钱
  9.     public void makeMoney()
  10.     {
  11.        super.makeMoney();
  12.        System.out.println("房地产公司赚钱了....");
  13.     }
  14. }
复制代码
  1. public class ShanZhaiCorp extends Corp
  2. {
  3.     public ShanZhaiCorp(Product product)
  4.     {
  5.         super(product);
  6.     }

  7.     public void makeMoney()
  8.     {
  9.        super.makeMoney();
  10.        System.out.println("小白马赚钱了...");
  11.     }
  12. }
复制代码

然后就是继承product的两个产品类:


  1. public class House extends Product
  2. {
  3.     //被生产出来的房子
  4.     public void beProducted()
  5.     {
  6.        System.out.println("生产出的房子是这样的...");
  7.     }

  8.     public void beSelled()
  9.     {
  10.        System.out.println("生产出的房子卖出去...");
  11.     }

  12. }
复制代码
  1. public class IPod extends Product
  2. {
  3.    public void beProducted()
  4.    {
  5.       System.out.println("生产出的ipod是这个样子的...");
  6.    }
  7.    public void beSelled()
  8.    {
  9.       System.out.println("生产出的ipod卖出去了...");
  10.    }
  11. }
复制代码
现在公司也有了! 产品也有了!
就剩下操作这些的一个client类了:
  1. public class Client
  2. {
  3.    public static void main(String args[])
  4.    {
  5.       House house = new House();
  6.       System.out.println("-------房地产公司是这个样子运行的-------");
  7.       //先找到我的公司
  8.       HouseCorp houseCorp = new HouseCorp(house);
  9.       houseCorp.makeMoney();
  10.       System.out.println("\n");

  11.      //山寨公司的产品很多,不过我们只要指定产品就行了
  12.      ShanZhaiCorp shanZhaiCorp = new ShanZhaiCorp(new Clothes());
  13.      shanZhaiCorp.makeMoney();

  14.    }
  15. }
复制代码

运行结果:


2015-01-27 15:01:47 的屏幕截图.png




评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
拈花小仙 + 5 + 5 + 3 热爱鱼C^_^

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-26 16:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表