桥接模式

应用场景

用于事物与对应功能的分离,通过抽象,完成解耦。

例如:存在M个事物,N个功能,按照常见思路,将N个功能包含于M个事物中,则这些方法需要写MXN遍,代码冗余严重,且事物-功能强耦合,当功能变更或者增加功能时,需要同时改变M次orN次。

传统做法:

class m1{
    fun1(){};
    fun2(){};
    ……
    funN(){};
}

class mM{
    fun1(){};
    fun2(){};
    ……
    funN(){};   
}

如果增加了某个方法,则需要继续更改。事物-功能强耦合,而且代码冗余度比较高,没有面向对象的思想。

OOP编程,则是面向接口-抽象类进行的,体现了人的思考过程。接口(抽象类)体现了思维过程,而具体的实现则是子类或者实现接口的类来实现。

拿个例子:对于信件和包裹都可以平邮、快递,那么就是2个事物,拥有2个功能;

1.定义接口:

public interface IPost{
    public void post();
} 

2.定义具体的动作

public class simplePost implements IPost{
    @overide
    public void post(){
        system.out.println("This is simple post!");
 }
}

public class fastPost implements IPost{
    @overide
    public void post(){
        system.out.println("This is fast post");    
    }
}

3.定义抽象事物

Abstract class AbstractThings{
    IPost ipost;
    AbstractThings(IPost ipost){
        this.ipost = ipost;
    }
    public void post(){
        ipost.post();
    }
}

4.定义具体事物

public class LetterThings extends AbstractThings{
    LetterThings(Ipost obj){
        super(obj);
    }
}

public class ParcelThings extends AbstractThings{
        ParcelThings(Ipost obj){
           super(obj);
        }   
    }

演示:

public Class Demo{

      static void main(string[] args){
        Ipost ipost = new simplePost();

        AbstractThings letter = new LetterThings(ipost);

        letter.post();

       }
    }

个人博客内容:http://nklongyi.com/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值