码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式之桥接模式

时间:2021-04-26 13:31:33      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:不能   void   stat   over   alt   java   super   new   lan   

桥接模式

  1. 桥接模式结构图:

    技术图片

  2. 示例代码:

    // 桥接角色Message接口
    public interface Message {
        void sendMessage(String message, String toUser);
    }
    
    // 具体Message角色Email
    public class EmailMessage implements Message{
        @Override
        public void sendMessage(String message, String toUser) {
            System.out.println("发送Email消息:" + message + "给" + toUser);
        }
    }
    
    // 具体Message角色SMS
    public class SmsMessage implements Message{
        @Override
        public void sendMessage(String message, String toUser) {
            System.out.println("发送Sms短消息:" + message + "给" + toUser);
        }
    }
    
    // 桥接抽象角色AbstractMessage
    public abstract class AbstractMessage {
    
        protected Message message;
    
        public AbstractMessage(Message message) {
            this.message = message;
        }
    
        public abstract void sendMessage(String msg, String toUser) ;
    }
    
    // 普通消息角色
    public class NormalMessage extends AbstractMessage{
        public NormalMessage(Message message) {
            super(message);
        }
    
        @Override
        public void sendMessage(String msg, String toUser) {
            msg = "[普通]" + msg;
            this.message.sendMessage(msg, toUser);
        }
    }
    
    // 紧急消息角色
    public class UrgencyMessage extends AbstractMessage{
        public UrgencyMessage(Message message) {
            super(message);
        }
    
        @Override
        public void sendMessage(String msg, String toUser) {
            msg = "[加急]" + msg;
            this.message.sendMessage(msg, toUser);
        }
    }
    
    // 测试类
    public class BridgeTest {
    
        public static void main(String[] args) {
            NormalMessage normalMessage = new NormalMessage(new EmailMessage());
            normalMessage.sendMessage("今天忙不忙?", "小安");
            UrgencyMessage urgencyMessage = new UrgencyMessage(new SmsMessage());
            urgencyMessage.sendMessage("能不能多聊会?", "小安");
        }
    }
    
    
  3. 总结:

    优点:分离了抽象部分及具体实现部分,提高了系统的扩展性,符合开闭原则;

    缺点:增加了系统的理解与设计难度,需要正确的识别系统中两个独立变化的维度.

设计模式之桥接模式

标签:不能   void   stat   over   alt   java   super   new   lan   

原文地址:https://www.cnblogs.com/wqlken/p/14698704.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!