最近在学习设计模式,简单记录一下
大话设计模式有写:
桥接模式(Bridge):将抽象部分与他的实现部分分离,使他们都可以独立的变化。
也就是实现系统可能有多角度分类,每一种分类都有可能变化,
那么就把这种多角度分离出来让他们独立变化,减少他们之间的耦合。
举个例子:
比如做一个蛋糕,
在形状上,可以有圆形和方形,
在类型上,可以有奶油类型和水果类型。
如果针对每种类型和形状都写成单独的类会有四种,即圆形水果蛋糕、圆形奶油蛋糕、方形水果蛋糕、方形奶油蛋糕,
当增加形状和类型时会产生非常多的类,这显然不是我们所希望的,这时就要用到桥接模式。
代码:(小提示:eclipse,复制代码后,鼠标点击包那里,直接粘贴,一个类就自动建好了)
//蛋糕形状接口
public interface CakeShape {
public void shape();
}
//蛋糕形状:方形
public class Square implements CakeShape{
@Override
public void shape() {
System.out.println("蛋糕形状:方形");
}
}
//蛋糕形状:圆形
public class Circle implements CakeShape{
@Override
public 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.youkuaiyun.com/youthon/article/details/7653389。
其实网上有很多人写各种设计模式,我写这篇文章的主要目的是想记录一下自己的学习历程,养成一个写博客的好习惯,
尽量做到简单易懂,不想弄太多文字定义的东西。
能力不足,写的很浅,有错误地方希望大神多多指导。