青玄 发表于 2015-1-27 15:02:24

java设置模式之桥梁模式

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



从图中可以看出,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();

   }
}

运行结果:







页: [1]
查看完整版本: java设置模式之桥梁模式