`
shuofenglxy
  • 浏览: 194403 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

菜鸟硕枫设计模式系列之8 桥接模式

阅读更多
桥接模式将抽象部分与具体实现分离,使得都能独立的变化。它采用注入实现的方式来实现解耦的,而通常注入的行为只是被注入者行为的一部分。桥接模式也是一种结构型设计模式。

桥接模式类图:
          


具体示例demo:

抽象消息
package bridgePattern;

public abstract class AbstractMessage {

	private MessageSending messageSending;
	private String msgContent;
	private String toUserName;
	public AbstractMessage(String msgContent, String toUserName,
			MessageSending messageSending){
		this.messageSending = messageSending;
	}
	
	public abstract void messageAction(String msgContent, String toUserName,
			MessageSending messageSending);
}


具体消息1:
package bridgePattern;

public class NormalMessage extends AbstractMessage{


	public NormalMessage(String msgContent, String toUserName,
			MessageSending messageSending) {
		super(msgContent, toUserName, messageSending);
		// TODO Auto-generated constructor stub
	}

	public void messageAction(String msgContent, String toUserName,
			MessageSending messageSending) {
		System.out.println("This is a normal message,send it as normal level");
		messageSending.sendMessage(msgContent, toUserName);
	}

}


具体消息2:
package bridgePattern;

public class UrgentMessage extends AbstractMessage{


	public UrgentMessage(String msgContent, String toUserName,
			MessageSending messageSending) {
		super(msgContent, toUserName, messageSending);
		// TODO Auto-generated constructor stub
	}

	public void messageAction(String msgContent, String toUserName,
			MessageSending messageSending) {
		System.out.println("This is a urgent message,send it as urgent level");
		messageSending.sendMessage(msgContent, toUserName);
	}

}


消息发送接口:
package bridgePattern;

public interface MessageSending {
	void sendMessage(String msgContent,String toUserName);
}


具体发送方式1:
package bridgePattern;

public class EmailMessageSending implements MessageSending{

	
	public void sendMessage(String msgContent, String toUserName) {
		
		System.out.println("Send "+msgContent+" "+toUserName+" "
				+"by EmailMessageSending");
		
	}

}


具体发送方式2:
package bridgePattern;

public class WangwangMessageSending implements MessageSending{

	
	public void sendMessage(String msgContent, String toUserName) {
		
		System.out.println("Send "+msgContent+" "+toUserName+" "
				+"by WangwangMessageSending");
		
	}

}


测试类:
package bridgePattern;

public class BridgeTest {

	public static void main(String[] args){
		MessageSending messageSending = new WangwangMessageSending();
		MessageSending messageSending2 = new EmailMessageSending();
		
		AbstractMessage message = new NormalMessage("hello,world",
				"lxy",messageSending);
		message.messageAction("hello,world", "lxy", messageSending);
		AbstractMessage message2 = new NormalMessage("hello,world",
				"lxy",messageSending2);
		message2.messageAction("hello,world", "lxy", messageSending2);
		
		AbstractMessage message3 = new UrgentMessage("hello,world",
				"lxy",messageSending);
		message3.messageAction("hello,world", "lxy", messageSending);
		AbstractMessage message4 = new UrgentMessage("hello,world",
				"lxy",messageSending2);
		message4.messageAction("hello,world", "lxy", messageSending2);
	}
}



说明:如果不采用桥接模式,可能就需要给每一种消息都要写不同的消息发送类型了,其实策略模式和桥接模式区别并不是十分大,往往大多数场合都有多种设计模式方式可以采用,设计模式的目的只是为了更好的解耦。

  • 大小: 20.9 KB
分享到:
评论

相关推荐

    设计模式学习经典篇之菜鸟篇

    本资源“设计模式学习经典篇之菜鸟篇”旨在为初学者提供一个全面而通俗易懂的设计模式学习路径。 设计模式的核心在于重用已验证的解决方案,以提高代码的可读性、可维护性和可扩展性。根据GOF(Gamma, Helm, ...

    深入浅出设计模式(.PDF)

    结构型设计模式如适配器模式、桥接模式、装饰器模式、组合模式、外观模式、享元模式和代理模式,这些模式主要处理对象的组合和结构,提高代码的复用性和模块化。行为型设计模式如观察者模式、命令模式、解释器模式、...

    23种设计模式知识要点.pdf_设计模式_

    设计模式是软件工程中的一种最佳实践,用于解决在软件开发过程中常见的问题,提供了一套可重用的解决方案。这些模式都是经验丰富的软件开发者在长期实践中总结出来的,它们可以帮助我们写出更加灵活、可维护和可扩展...

    NET 设计模式

    代码可以运行,下载这个后,建议买->《大话设计模式这本书》。来辅助学习。有很多关于C#语言有关的设计模式分别由: 1、模板方法模式 2、外观模式 3、建造者模式 4、观察者模式 5、抽象工厂模式 6、状态模式 7、...

    C#23种设计模式【完整】(亲测可用)

    在软件开发过程中,设计模式是提升代码可维护性、可扩展性和可重用性的关键工具。本资源包含的"C#23种设计模式【完整】(亲测可用)"涵盖了软件设计中的经典模式,这些模式都是经过实践检验的有效解决方案,旨在帮助...

    23种软件设计模式简述

    在软件工程领域,设计模式是解决特定问题的模板或指南,它们被广泛应用于软件开发过程中,以提高代码的可读性、可维护性和重用性。以下是对23种常见软件设计模式的简述,这些模式可以大致分为三类:创建型模式、结构...

    Java之美[从菜鸟到高手演变]之设计模式

    总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式...

    java常用数据结构及算法集锦

    桥接模式 行为模式 观察者模式 模板方法模式 策略模式 命令模式 调停者模式 备忘录模式 解释器模式 迭代器模式 状态模式 责任链模式 访问者模式 结构与算法 基础概念 稀疏数组与二维数组 队列和栈结构 单向链表和...

    设计模式整理

    设计模式是软件工程中一套被广泛认可的最佳实践和解决方案模板。它们为程序员提供了一种方法,以应对软件设计和架构中反复出现的问题。设计模式按其意图和应用领域可以分为三大类:创建型模式、结构型模式和行为型...

    吉林大学软件学院卓班设计模式第三次作业

    使用哪种设计模式改进较好?如何改进? 4) 某书店需要开发一套图书购销存软件。在设计图书类时发现:图书有单行本和成套的,又细分成教辅材料、科学知识、文学著作等。设计时,希望能够以一致的方式访问各种图书,...

    资料库,关于面向对象以及4大特性,8大原则,24设计模式

    24种设计模式是解决软件开发中常见问题的通用解决方案,分为创建型、结构型和行为型三大类: 1. 创建型模式:单例(Singleton)、工厂方法(Factory Method)、抽象工厂(Abstract Factory)、建造者(Builder)、...

    Log4J相关jar包.zip

    Log4J 2支持多种布局模式,如PatternLayout和XMLLayout,可以方便地调整输出格式。此外,它还引入了配置文件(如log4j2.xml或log4j2.json),允许开发者通过配置文件灵活控制日志级别、输出目的地等。 SLF4J,全称...

Global site tag (gtag.js) - Google Analytics