无废话设计模式(5)结构型模式--桥接模式

0-前言

  桥接模式定义将抽象部分与它的实现部分分离,使它们可以独立地变化;

1-实现

1-1、给个简单容易看的UML图,

  其实简单点理解就是手机聚合手机膜组件,然后各自通过继承父类实现各自的具体产品

 1-2、实现代码

//1、手机膜抽象类
abstract class  Film
{
    public abstract void benks(); //给手机贴膜
}
//2-1、手机膜具体类--钢化膜
class HardFilm extends Film
{
    @Override
    public void benks()
    {
        System.out.println("给手机贴钢化膜");
    }
}
//2-2、手机膜具体类--高清膜
class SoftFilm extends Film
{
    @Override
    public void benks()
    {
        System.out.println("给手机贴上了高清膜");
    }
}

//3、手机抽象类
abstract class  Phone
{
    protected Film film;
    public void setFilm(Film film)
    {
        this.film = film;
    }

    abstract  void benks();
}

//3-1、手机具体类--华为手机
class  HuaweiPhone extends  Phone
{
    @Override
    void benks()
    {
        System.out.println("华为手机要贴膜了:");
        film.benks();
    }
}
//3-2、手机具体类 --苹果手机
class  IPhone extends  Phone
{
    @Override
    void benks()
    {
        System.out.println("苹果手机要贴膜了:");
        film.benks();
    }
}

客户端:

        //华为手机
        Phone huaweiPhone = new HuaweiPhone();
        huaweiPhone.setFilm(new HardFilm()); //贴钢化膜
        huaweiPhone.benks();
        
        huaweiPhone.setFilm(new SoftFilm()); //贴高清膜
        huaweiPhone.benks();

运行结果:

2-应用场景简单总结

1、当不希望抽象部分和它的实现部分有强绑定时;

2、当类的抽象和它的实现都可以通过生成子类的方法来加以扩充时;

3、当对一个抽象类的实现部分的修改应对客户不产生影响时

原文地址:https://www.cnblogs.com/yanghj/p/13410268.html