java设计模式之桥接模式
桥接模式的定义:桥接模式又叫作桥梁模式、接口模式或柄体模式,指将抽象部分与具体实现部分分离,使它们都可以独立的变化,属于结构性模式。 桥接模式的主要目的是通过组合的方式建立两个类之间的联系,而不是继承,但又类是多重继承方案。但是多重继承方案往往违背了类 的单一职责原则,其复用性比较差,桥接模式是比多重继承方案更好的替代方案。桥接模式的核心在于把抽象与实现解耦。 桥接模式的运用场景:
使用桥接模式设计稍复杂得消息系统:具给例子,我们在平时办公得时候经常通过邮件消息、短信消息、或者系统内消息与同时进行沟通。消息又会有紧急程度之分,分为 普通消息、加急消息和特急消息。显然,整个消息系统可以划分为两个维度,下面我们来看看通过桥接模式如何解决这个问题,先创建一个 IMessage接口担任桥接的角色类。 public interface IMessage { //发送消息的内容和接收人 void send(String message,String toUser); } 创建邮件消息实现类EmailMessage类。 class EmailMessage implements toUser); } } 创建短线消息实现类SmsMessage类。 class SmsMessage toUser); } } 创建桥接抽象角色AbastractMessage类。 abstract class AbastractMessage { private IMessage message; public AbastractMessage(IMessage message) { this.message = message; } sendMessage(String message,String toUser){ this.message.send(message,toUser); } } 创建具体实现普通消息NomalMessage类。 public class NomalMessage extends AbastractMessage { 创建具体实现加急消息UrgencyMessage类。 class UrgencyMessage extends UrgencyMessage(IMessage message) { super(message); } message; .sendMessage(message,toUser); } Object watch(String messageId){ return null; } } 测试代码。 Test { static main(String[] args) { IMessage message = new SmsMessage(); AbastractMessage abastractMessage = NomalMessage(message); abastractMessage.sendMessage("加班申请","王总"); message = EmailMessage(); abastractMessage = UrgencyMessage(message); abastractMessage.sendMessage("加班申请",1)">); } } 测试结果如下: ? ?来看看对应的UML类图: ? ?由上图可以看到,桥接模式主要包含4个角色.
桥接模式的优点:
桥接模式的缺点:
? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |