桥接模式

原创 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("《三毛流浪记》");
	}
}

测试结果:






版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

桥接模式Demo

  • 2017-06-09 13:46
  • 19.47MB
  • 下载

delphi桥接模式

  • 2012-08-08 16:28
  • 2.71MB
  • 下载

桥接模式——多层分支也不怕

在编程中,我们会经常遇见多层级分支的情况,显然用继承是不合适的,子类和父类的耦合过高会给后期代码的维护带来极大的麻烦,为了解决这个问题,我们可以使用桥接模式。简单来说,桥接模式就是将每个分支单独分开,...

桥接模式 C++ 实现

  • 2014-05-21 20:08
  • 32KB
  • 下载

java 桥接模式

处理多维度变化--桥接模式Bridge

概述:在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?这就...

Android桥接模式demo

  • 2016-04-13 16:51
  • 15.44MB
  • 下载

结构型之桥接模式

1、桥接模式(Bridge Pattern):将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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