`
Flyingh
  • 浏览: 18322 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Bridge

 
阅读更多

桥梁模式的用意是"将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化"。这句话有三个关键词,也就是抽象化、实现化和脱耦.

Lock.java

 

package com.flyingh.ilock;

public interface Lock {
	void lock();

	void unlock();
}

 

LockA.java

package com.flyingh.lock;

import com.flyingh.ilock.Lock;

public class LockA implements Lock {

	@Override
	public void lock() {
		// TODO Auto-generated method stub
		System.out.println("LockA is locked!");
	}

	@Override
	public void unlock() {
		// TODO Auto-generated method stub
		System.out.println("lockA is unlocked!");
	}

} 

  LockB.java

 

package com.flyingh.lock;

import com.flyingh.ilock.Lock;

public class LockB implements Lock {

	@Override
	public void lock() {
		// TODO Auto-generated method stub
		System.out.println("LockB is locked!");
	}

	@Override
	public void unlock() {
		// TODO Auto-generated method stub
		System.out.println("LockB is unlocked!");
	}

}

 

 Key.java

 

package com.flyingh.ikey;

public interface Key {
	void openLock();

	void closeLock();
}

 

 KeyA.java

 

package com.flyingh.key;

import com.flyingh.ikey.Key;
import com.flyingh.ilock.Lock;

public class KeyA implements Key {
	private Lock lock;

	public KeyA(Lock lock) {
		super();
		this.lock = lock;
	}

	@Override
	public void openLock() {
		// TODO Auto-generated method stub
		System.out.println("use KeyA to openLock");
		lock.unlock();
	}

	@Override
	public void closeLock() {
		// TODO Auto-generated method stub
		System.out.println("use KeyA to closeLock");
		lock.lock();
	}

}

 

KeyB.java

package com.flyingh.key;

import com.flyingh.ikey.Key;
import com.flyingh.ilock.Lock;

public class KeyB implements Key {
	private Lock lock;

	public KeyB(Lock lock) {
		super();
		this.lock = lock;
	}

	@Override
	public void openLock() {
		// TODO Auto-generated method stub
		System.out.println("use KeyB to openLock");
		lock.unlock();
	}

	@Override
	public void closeLock() {
		// TODO Auto-generated method stub
		System.out.println("use KeyB to closeLock");
		lock.lock();
	}

} 

  Client.java

 

package com.flyingh.client;

import com.flyingh.ikey.Key;
import com.flyingh.ilock.Lock;
import com.flyingh.key.KeyA;
import com.flyingh.key.KeyB;
import com.flyingh.lock.LockA;
import com.flyingh.lock.LockB;

public class Client {
	public static void main(String[] args) {
		Lock lockA = new LockA();
		Key keyA = new KeyA(lockA);
		keyA.openLock();
		keyA.closeLock();
		System.out.println("*************");
		Lock lockB = new LockB();
		Key keyB = new KeyB(lockB);
		keyB.openLock();
		keyB.closeLock();
		System.out.println("*************");
		Key key = new KeyA(new LockB());
		key.openLock();
		key.closeLock();
	}
}

 

程序运行结果如下:

use KeyA to openLock
lockA is unlocked!
use KeyA to closeLock
LockA is locked!
*************
use KeyB to openLock
LockB is unlocked!
use KeyB to closeLock
LockB is locked!
*************
use KeyA to openLock
LockB is unlocked!
use KeyA to closeLock
LockB is locked!
 
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Rizom Bridge for Maya

    《Rizom Bridge for Maya:连接创意与技术的桥梁》 在数字艺术和动画领域,Maya是一款广泛使用的三维建模、动画、仿真和渲染软件,由Autodesk公司开发。而Rizom Bridge for Maya则是一款专为Maya设计的扩展工具,它...

    B4A-Bridge2.08汉化版

    【B4A-Bridge2.08汉化版】是一款专为B4A(Basic4Android)开发者设计的工具,它极大地简化了手机无线网络和蓝牙连接的开发过程。这款汉化版本使得中国用户能够更加方便地理解和使用,避免了语言障碍带来的困扰。 B4...

    php-java-bridge_7.2.1_documentation.zip

    1. **安装JavaBridge.jar和Java.inc**:首先确保你的系统中已经安装了Java运行环境。然后将JavaBridge.jar和Java.inc文件放入项目的合适目录。 2. **启动Java Bridge服务器**:通过Java命令行启动JavaBridge.jar,...

    Avalon-MM Pipeline Bridge

    Avalon-MM Pipeline Bridge是Qsys系统中一种重要的互联组件,用于优化基于Avalon-MM接口的SoC(System-on-a-Chip)设计中的数据传输性能。Avalon-MM是Altera公司(现已被Intel收购)开发的一种内存映射协议,广泛...

    AXI Bridge for PCI Express Gen3 Subsystem v3.0

    AXI Bridge for PCI Express Gen3 Subsystem v3.0是基于Vivado Design Suite的IP核,旨在提供PCI Express Gen3接口的AXI桥接解决方案。下面是该IP核心的详细知识点总结: 一、AXI Bridge for PCI Express Gen3 ...

    Quixel Bridge与unity的桥接插件.rar

    Quixel Bridge是一款强大的纹理和材质库管理工具,它与Unity集成,为游戏开发提供高质量的PBR(物理渲染)资源。这款桥接插件允许用户直接在Unity编辑器中访问和导入Quixel库中的丰富资源,极大地提升了游戏的视觉...

    bridge-utils1.7.1网桥工具教程[内含软件包].zip

    **网桥工具Bridge-Utils详解** 在容器技术领域,Docker是广泛应用的开源平台,它为开发者提供了构建、部署和运行应用程序的环境。在Docker的网络配置中,`bridge-utils`是一个至关重要的工具,它使得我们可以创建和...

    PCI Express to PCI Bridge Specification,rev1.0

    ### PCI Express to PCI Bridge Specification,rev1.0 #### 概述 《PCI Express to PCI Bridge Specification,rev1.0》是一份详细介绍了如何在PCI Express(PCIe)与传统PCI或PCI-X总线之间建立桥接的标准文档。这...

    bridge-utils-1.4.tar.gz

    《桥接工具——bridge-utils-1.4的深度解析》 在信息技术领域,网络设备的配置和管理是一项至关重要的任务,特别是在进行网络测试和实验环境中。桥接工具(Bridge Utilities)是一个不可或缺的实用程序,它使得创建...

    sdi_tx_bridge

    Quickly bridge SDI inputs and outputs to video and synchronization signals that can then be used with the Xilinx video to/from AXI4-Stream cores The LogiCORE? IP SDI Tx and RX Video Bridge cores are ...

    linux网桥程序(bridge-utils-1.4)及帮助

    Linux网桥程序,如"bridge-utils-1.4",是Linux操作系统中用于网络设备桥接的重要工具。它允许用户将多个网络接口(如以太网卡)连接在一起,形成一个逻辑上的单一网络接口,从而实现不同网络之间的通信或者创建虚拟...

    Linux下的虚拟Bridge实现

    ### Linux下的虚拟Bridge实现 #### 一、Bridge概念与功能 **Bridge**(桥接)是一种在二层网络中提供连接服务的技术。在Linux环境下,虚拟Bridge作为一种虚拟网络设备,可以将多个物理或虚拟网络接口汇聚在一起,...

    flink-table-api-java-bridge_2.11-1.12.7-API文档-中文版.zip

    赠送jar包:flink-table-api-java-bridge_2.11-1.12.7.jar; 赠送原API文档:flink-table-api-java-bridge_2.11-1.12.7-javadoc.jar; 赠送源代码:flink-table-api-java-bridge_2.11-1.12.7-sources.jar; 赠送...

    php-java-bridge 配置包

    start javaw -jar JavaBridge.jar 保存后,双击启动 会有一个提示框选择vmbridge port 默认8080,直接点ok就行了 5.在/demo/下新建test.php内容如下: require_once ( "java/Java.inc" ); header( "content-type:...

    PHP/Java Bridge的JavaBridge.jar、php-servlet.jar和php-script.jar

    1. **JavaBridge.jar**: JavaBridge.jar是PHP/Java Bridge的核心组件,它提供了Java和PHP之间的接口。这个库包含了一系列的类和方法,用于在PHP脚本和Java对象之间建立连接。通过这个桥接器,PHP可以调用Java类和...

    flink-table-api-java-bridge_2.12-1.14.3-API文档-中英对照版.zip

    赠送jar包:flink-table-api-java-bridge_2.12-1.14.3.jar; 赠送原API文档:flink-table-api-java-bridge_2.12-1.14.3-javadoc.jar; 赠送源代码:flink-table-api-java-bridge_2.12-1.14.3-sources.jar; 赠送...

    b4a_bridge.apk.rar

    【标题】:“b4a_bridge.apk.rar”指的是一个压缩包文件,其主要包含的是一个名为“b4a_bridge.apk”的应用程序。这个文件是专为Basic4Android(B4A)开发平台设计的,用于远程调试模式。 【基本概念】: 1. **...

    Mame模拟器游戏音乐播放器bridge M1(2015.9)

    【Mame模拟器游戏音乐播放器Bridge M1详解】 Mame,全称为 Multiple Arcade Machine Emulator,是一款强大的多平台街机游戏模拟器,它能够复现各种经典街机游戏的运行环境,使得用户可以在个人电脑上体验到过去那些...

Global site tag (gtag.js) - Google Analytics