鱼C论坛

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

java设置模式之桥梁模式

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

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

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

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

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

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

   //赚钱
   public void makeMoney()
   {
      this.product.beProducted();
      this.product.beSelled();
   }
}
那赚钱的话,使用产品去赚钱的,所以还得来一个product:

public abstract class Product
{
   //不管是什么产品它总是能被生产出来
   public abstract void beProducted();
   //生产出来的东西,一定要销售出去
   public abstract void beSelled();
}

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

public class HouseCorp extends Corp
{
    //定义传递一个house产品进来
    public HouseCorp(House house)
    {
       super(house);
    }

    //赚钱
    public void makeMoney()
    {
       super.makeMoney();
       System.out.println("房地产公司赚钱了....");
    }
}
public class ShanZhaiCorp extends Corp
{
    public ShanZhaiCorp(Product product)
    {
        super(product);
    }

    public void makeMoney()
    {
       super.makeMoney();
       System.out.println("小白马赚钱了...");
    }
}
然后就是继承product的两个产品类:

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

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

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

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

   }
}
运行结果:


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-11-15 16:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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