设计模式——桥接模式
2016-06-22 11:34
375 查看
桥接模式
将抽象部分与实现部分分离,使它们都可以独立的变化。
实现系统可能有多角度分类,每一种分类都有可能变化,那么就把这种多角度分离出来让它们独立变化,减少它们之间耦合
类图
代码
package com.sun.bridging;
/**
* 手机抽象类
*/
public abstract class Mobile {
public Soft soft;
public void operaction() {
soft.option();
}
public Soft getSoft() {
return soft;
}
public void setSoft(Soft soft) {
this.soft = soft;
}
}
package com.sun.bridging;
/**
* android手机
*/
public class AndroidMoblie extends Mobile{
public static void main(String[] args) {
AndroidMoblie am = new AndroidMoblie();
am.setSoft(new SoftA());
am.operaction();
am.setSoft(new SoftB());
am.operaction();
}
}
package com.sun.bridging;
/**
* 软件抽象类
* @author work
*/
public abstract class Soft {
public abstract void option();
}
将抽象部分与实现部分分离,使它们都可以独立的变化。
实现系统可能有多角度分类,每一种分类都有可能变化,那么就把这种多角度分离出来让它们独立变化,减少它们之间耦合
类图
代码
package com.sun.bridging;
/**
* 手机抽象类
*/
public abstract class Mobile {
public Soft soft;
public void operaction() {
soft.option();
}
public Soft getSoft() {
return soft;
}
public void setSoft(Soft soft) {
this.soft = soft;
}
}
package com.sun.bridging;
/**
* android手机
*/
public class AndroidMoblie extends Mobile{
public static void main(String[] args) {
AndroidMoblie am = new AndroidMoblie();
am.setSoft(new SoftA());
am.operaction();
am.setSoft(new SoftB());
am.operaction();
}
}
package com.sun.bridging;
/**
* 软件抽象类
* @author work
*/
public abstract class Soft {
public abstract void option();
}
package com.sun.bridging; /** * A软件 */ public class SoftA extends Soft{ @Override public void option() { // TODO Auto-generated method stub System.out.println("A ................"); } }
package com.sun.bridging; /** * B软件 */ public class SoftB extends Soft{ @Override public void option() { // TODO Auto-generated method stub System.out.println("B................."); } }
相关文章推荐
- 程序员技术练级攻略
- Unity3D学习日记(十) iOS获取局域网的IP
- eclipse 安装svn插件
- 网站被降权!网站内容从哪些方面检查?
- Java 冒泡排序
- jQuery soColorPacker 网页拾色器
- [Android]带进度条的WebView
- ssm导出列表数据
- HTML5的可以支持RTMP 但是无法播放RTSP 兼容浏览器
- javaee 导航
- Struts2拦截器
- 学习Spark的入门教程——《Spark核心源码分析与开发实战》
- openCV lib 模块儿
- mysql一键安装教程 mysql5.1.45全自动安装(编译安装)
- svn使用
- 【unity3d】移动平台各资源路径
- SpringMVC与Struts2的区别
- Comparable与Comparator的区别
- 一片鸡汤,然而并没有什么用
- Python:线程、进程和协程