zoukankan      html  css  js  c++  java
  • java设计模式----桥接模式

    应用场景:抽象部分与实现部分分离,使它们都可以独立的变化。

    创建一个抽象类:

    package bridge;
    
    public  abstract class Abstraction {
    	protected Interfacor interfacor;
    	public Abstraction(Interfacor interfacor){
    		this.interfacor=interfacor;
    	}
    	public void opration(){
    		interfacor.opration();
    	}
    
    }
    

     创建一个接口:

    package bridge;
    
    public interface Interfacor {
    	public void opration();
    }
    

    创建两个接口实现:

    package bridge;
    
    public class InterfacorImpl1 implements Interfacor{
    
    	@Override
    	public void opration() {
    		System.out.println("实现A功能");
    	}
    
    }
    
    package bridge;
    
    public class InterfacorImpl2 implements Interfacor{
    
    	@Override
    	public void opration() {
    		System.out.println("实现功能B");
    	}
    
    }
    

     创建子类实现抽象类:

    package bridge;
    
    public class RefineAbstraction extends Abstraction{
    
    	public RefineAbstraction(Interfacor interfacor) {
    		super(interfacor);
    	}
    	public void RefineOperation(){
    		System.out.println("子类重新定义");
    	}
    
    }
    

    测试:

    package bridge;
    
    public class Test {
    	public static void main(String[] args) {
    		Interfacor interfacor=new InterfacorImpl1();
    		RefineAbstraction abstraction=new RefineAbstraction(interfacor);
    		abstraction.opration();
    		abstraction.RefineOperation();
    	}
    }
    

    结果:

    实现A功能
    子类重新定义
    

     这样把抽象和实现分离,需要哪个实现就调哪个实现。

    再来个应用场景:

     

    这上边有两个维度,一个是抽象的消息(普通消息,加急消息,特级消息),另一个维度是具体的实现(email,手机短消息,站内短消息)

    这两个维度有九种不同的可能性。现在出现问题的根本原因,就在于消息的抽象和实现是混杂在一起的,这就导致了,一个纬度的变化,会引起另一个纬度进行相应的变化,从而使得程序扩展起来非常困难。要想解决这个问题,就必须把这两个纬度分开,也就是将抽象部分和实现部分分开,让它们相互独立,这样就可以实现独立的变化,使扩展变得简单。

    那么如何实现呢?

    根据上面的方法。

    首先也是定义抽象接口。

    再定义抽象类

    再实现抽象接口

    再继承抽象类

  • 相关阅读:
    【第一周】进度条
    【第二周】Java实现英语文章词频统计(改进1)
    【第二周】关于java.util包下的Random类
    【第二周】结对编程(宫丽君和林莉):四则运算
    【第二周】scrum站立会议
    【第二周】燃尽图
    【第二周】Java实现英语文章词频统计
    【第一周】读《构建之法》有感
    python:带参数的装饰器,函数的有用信息
    python:数据类型dict
  • 原文地址:https://www.cnblogs.com/JAYIT/p/5007804.html
Copyright © 2011-2022 走看看