首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

初学者硕枫设计模式系列之8 桥接模式

2012-09-19 
菜鸟硕枫设计模式系列之8 桥接模式桥接模式将抽象部分与具体实现分离,使得都能独立的变化。它采用注入实现

菜鸟硕枫设计模式系列之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);}}


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

热点排行