浅谈设计模式-桥接模式

来源:互联网 发布:淘宝网服装男装 编辑:程序博客网 时间:2024/06/06 05:51

最近在学习设计模式,简单记录一下

大话设计模式有写:

桥接模式(Bridge):将抽象部分与他的实现部分分离,使他们都可以独立的变化。

   也就是实现系统可能有多角度分类,每一种分类都有可能变化,

   那么就把这种多角度分离出来让他们独立变化,减少他们之间的耦合。

举个例子:

比如做一个蛋糕,

在形状上,可以有圆形和方形,

在类型上,可以有奶油类型和水果类型。

如果针对每种类型和形状都写成单独的类会有四种,即圆形水果蛋糕、圆形奶油蛋糕、方形水果蛋糕、方形奶油蛋糕,

当增加形状和类型时会产生非常多的类,这显然不是我们所希望的,这时就要用到桥接模式。

代码:(小提示:eclipse,复制代码后,鼠标点击包那里,直接粘贴,一个类就自动建好了)

//蛋糕形状接口public interface CakeShape {public void shape();}


//蛋糕形状:方形public class Square implements CakeShape{@Overridepublic void shape() {System.out.println("蛋糕形状:方形");}}

//蛋糕形状:圆形public class Circle implements CakeShape{@Overridepublic void shape() {System.out.println("蛋糕形状:圆形");}}

//蛋糕类型抽象类public abstract class CakeType {//引用蛋糕形状接口CakeShape cakeShape;//蛋糕类型void type(){};}

public class Cream extends CakeType{public void type(){System.out.println("蛋糕类型:奶油");}}

//蛋糕类型:水果public class Fruit extends CakeType{public void type(){System.out.println("蛋糕类型:水果");}}

//测试类public class Product {public static void main(String[] args) {CakeType ct = new Fruit();ct.cakeShape = new Circle();ct.type();ct.cakeShape.shape();}}

输出结果:

蛋糕类型:水果
蛋糕形状:圆形


可以看到,桥接模式主要通过一个接口类,和一个抽象类,将两种子类型进行分离,由抽象类引用接口,实现调用。

桥接模式和很多模式都很像,比如策略模式、工厂模式,有很多大神分析区别,有兴趣的可以看下这篇文章

点击打开链接http://blog.csdn.net/youthon/article/details/7653389。

其实网上有很多人写各种设计模式,我写这篇文章的主要目的是想记录一下自己的学习历程,养成一个写博客的好习惯,

尽量做到简单易懂,不想弄太多文字定义的东西。

能力不足,写的很浅,有错误地方希望大神多多指导。