java 行为模式 桥接模式

简介

桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式。
个人解释:将变化的维度进行抽离,在他们之间搭建一座桥梁来通信,两个代码组件之间面向接口桥接调用,那么接口就是他们之间的桥梁

                  java 行为模式 桥接模式_第1张图片

  • 抽象化(Abstraction)角色:抽象化给出的定义,并保存一个对实现化对象的引用。
  • 修正抽象化(Refined Abstraction)角色:扩展抽象化角色,改变和修正父类对抽象化的定义。
  • 实现化(Implementor)角色:这个角色给出实现化角色的接口,但不给出具体的实现。必须指出的是,这个接口不一定和抽象化角色的接口定义相同,实际上,这两个接口可以非常不一样。实现化角色应当只给出底层操作,而抽象化角色应当只给出基于底层操作的更高一层的操作。
  • 具体实现化(Concrete Implementor)角色:这个角色给出实现化角色接口的具体实现。
package com.designpattern;

public class BridgePatternDemo {

    public static void main(String[] args) {
        Implementor implementor = new ConcreteImplementor();
        Abstraction Abstraction = new RefinedAbstraction(implementor);
        Abstraction.execute();
    }

    public interface Implementor {
        public void execute();
    }

    public static class ConcreteImplementor implements Implementor {
        public void execute() {
            System.out.println("执行了功能逻辑");
        }
    }

    public static abstract class Abstraction {
        protected Implementor Implementor;

        public Abstraction(BridgePatternDemo.Implementor implementor) {
            Implementor = implementor;
        }

        public abstract void execute();
    }

    public static class RefinedAbstraction extends Abstraction {

        public RefinedAbstraction(Implementor implementor) {
            super(implementor);
        }

        @Override
        public void execute() {
            Implementor.execute();
        }
    }
}

 

/**
 *
 * @description: 发送消息
 * @author: ly
 * @time: 2019-12-23 12:36
 *
 */
interface Message {

    /**
     * @Author ly
     * @Description 发送消息
     * @Param message 消息内容
     * @Param toUser 发送给谁
     * @return void
     * @Date 12:37 2019-12-23
     **/
    void sendMessage(String message,String toUser);
}

/**
 *
 * @description: 发送短信
 * @author: ly
 * @time: 2019-12-23 12:36
 *
 */
class ShortMessage implements Message{
    @Override
    public void sendMessage(String message, String toUser) {
        System.out.println("发送短信给"+ toUser + ",消息内容:" + message );
    }
}
/**
 *
 * @description: 发送email
 * @author: ly
 * @time: 2019-12-23 12:36
 *
 */
class Email implements Message {
    @Override
    public void sendMessage(String message, String toUser) {
        System.out.println("发送email给"+ toUser + ",消息内容:" + message );
    }
}

/**
 *
 * @description: 持有发送消息实例
 * @author: ly
 * @time: 2019-12-23 12:36
 *
 */
abstract class AbstractMessage {

    //持有消息类型维度的实例
    protected Message message;

    public AbstractMessage(Message message){
        this.message = message;
    }

    //发送消息
    public void sendMessage(String message,String toUser){
        this.message.sendMessage(message,toUser);
    }
}

/**
 *
 * @description: 发送普通消息
 * @author: ly
 * @time: 2019-12-23 12:36
 *
 */
class GeneralMessage extends AbstractMessage{

    public GeneralMessage(Message message) {
        super(message);
    }

    //发送普通消息
    public void sendMessage(String message,String toUser){
        super.sendMessage(message,toUser);
    }
}

/**
 *
 * @description: 发送紧急消息消息
 * @author: ly
 * @time: 2019-12-23 12:36
 *
 */
class UrgentMessage extends AbstractMessage{

    public UrgentMessage(Message message) {
        super(message);
    }

    //发送紧急消息
    public void sendMessage(String message,String toUser){
        System.out.print("紧急消息加红色。");
        super.sendMessage(message,toUser);
    }
}

/**
 *
 * @description: 发送异常消息
 * @author: ly
 * @time: 2019-12-23 12:36
 *
 */
class ErrorMessage extends AbstractMessage{

    public ErrorMessage(Message message) {
        super(message);
    }

    //发送紧急消息
    public void sendMessage(String message,String toUser){
        System.out.print("异常消息加红色。");
        warning();
        super.sendMessage(message,toUser);
    }

    //警报
    private void warning(){
        System.out.print("异常消息发出警报声。");
    }
}

/**
 *
 * @description: 测试
 * @author: ly
 * @time: 2019-12-23 12:36
 *
 */
class client2{
    public static void main(String[] args) {
        //发送普通的短信消息
        new GeneralMessage(new ShortMessage()).sendMessage("你好吗","小花");

        //发送异常email
        new ErrorMessage(new Email()).sendMessage("系统异常,请管理员紧急处理一下","管理员");
    }

}

 

你可能感兴趣的:(java设计模式)