桥接模式

原创 2015年11月21日 20:15:26

桥接模式

        桥接模式(Bridge Pattern)的用意是将抽象化与实现化解耦,使得二者可以独立变化。

      


Abstraction表示抽象类  它定义了抽象类的接口,并且维护一个抽象实现类Implementor的对象;

RefineAbstratction表示扩充的抽象类,它扩充由Abstratcion定义的接口;

Implementor表示抽象实现类接口用于定义类的接口,这个接口不一定要与abstraction的接口完全一致,事实上着两个接口定义可以完全不同


桥接模式之跨平台视频播放器

1:实例说明:

       开发一个跨平台的视频播放器,可以在不同的操作系统平台(Windows ,Linux)上播放多种格式的视频文件,如MPEG,RMVB,AVIWMV等等。


实例类图:



Abstraction:

抽象类OperationSystemVersion

package Abstraction;

import Implementor.VideoFile;

public abstract class OperationSystemVersion {

	protected VideoFile vf;
	public void setVideoFile(VideoFile vf){
		this.vf=vf;
	}
	public abstract void play(String fileName);
}

RefinedAbstraction:

LinuxVersion:

package RefinedAbstraction;

import Abstraction.OperationSystemVersion;

public class LinuxVersion extends OperationSystemVersion {

	@Override
	public void play(String fileName) {
		vf.decode("Linux",fileName);
	}
}
UnixVersion

package RefinedAbstraction;

import Abstraction.OperationSystemVersion;

public class UnixVersion extends OperationSystemVersion {

	@Override
	public void play(String fileName) {
		vf.decode("Unix",fileName);
	}
}

WindowsVersion
package RefinedAbstraction;

import Abstraction.OperationSystemVersion;

public class WindowsVersion extends OperationSystemVersion {

	@Override
	public void play(String fileName) {
		vf.decode("Windows",fileName);
	}
}
Implementor

VideoFile

package Implementor;

public interface VideoFile {
	public void decode(String osType,String fileName);

}

ConcreteImplements:

AVIFile

package ConcreteImplements;

import Implementor.VideoFile;

public class AVIFile implements VideoFile {

	@Override
	public void decode(String osType, String fileName) {
		System.out.println("格式为AVI的视频文件:"+fileName+"在"+osType+"平台中解码播放");
	}
}

MPEGFile

package ConcreteImplements;

import Implementor.VideoFile;

public class MPEGFile implements VideoFile {

	@Override
	public void decode(String osType, String fileName) {
		System.out.println("格式为MPEG的视频文件:"+fileName+"在"+osType+"平台中解码播放");
	}
}

RMVBFile
package ConcreteImplements;

import Implementor.VideoFile;

public class RMVBFile implements VideoFile {

	@Override
	public void decode(String osType, String fileName) {
		System.out.println("格式为RMVB的视频文件:"+fileName+"在"+osType+"平台中解码播放");
	}
}

WMVFile

package ConcreteImplements;

import Implementor.VideoFile;

public class WMVFile implements VideoFile {

	@Override
	public void decode(String osType, String fileName) {
		System.out.println("格式为AVI的视频文件:"+fileName+"在"+osType+"平台中解码播放");
	}
}

Test

package Test;

import Abstraction.OperationSystemVersion;
import ConcreteImplements.AVIFile;
import Implementor.VideoFile;
import RefinedAbstraction.UnixVersion;

public class test {

	public static void main(String args[]){
		VideoFile file;
		OperationSystemVersion version;
		file=new AVIFile();
		version=new UnixVersion();
		version.setVideoFile(file);
		version.play("《三毛流浪记》");
	}
}

测试结果:






桥接模式示例

  • 2017年10月26日 09:22
  • 17KB
  • 下载

桥接模式Demo

  • 2017年06月09日 13:46
  • 19.47MB
  • 下载

VM12 虚拟机使用桥接模式却连不上网的解决办法

写计算机网络作业时遇见一个问题:虚拟机的IP、子网掩码、默认网关设置得与宿主机一致,但死活ping不通外网、内网。 折腾了一晚上终于知道问题出在哪儿了。。。 只需将VM的虚拟网络编辑器中关于 VMne...
  • Bthsky
  • Bthsky
  • 2017年03月31日 21:37
  • 5137

delphi桥接模式

  • 2012年08月08日 16:28
  • 2.71MB
  • 下载

桥接模式 C++ 实现

  • 2014年05月21日 20:08
  • 32KB
  • 下载

virtualbox 设置桥接模式

题主的机子是mac air,由于需要学习linux,装了个virtualbox,其上运行一个ubuntu系统 虚拟系统刚装好的时候其实是可以上网的,默认的网络连接方式是网络地址转换(NAT),如图,...

java 桥接模式

  • 2011年12月25日 19:45
  • 2KB
  • 下载

Android桥接模式demo

  • 2016年04月13日 16:51
  • 15.44MB
  • 下载

VMware虚拟主机桥接模式无法连接本地主机

VMware虚拟主机桥接模式无法连接本地主机在vmware中连接网络的方式主要有3中 Use brudgednetworking :使用桥接的方式连接 Use networkaddress trans...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:桥接模式
举报原因:
原因补充:

(最多只允许输入30个字)