zoukankan      html  css  js  c++  java
  • 无废话设计模式(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、当对一个抽象类的实现部分的修改应对客户不产生影响时

  • 相关阅读:
    ***CSS3 Gradient渐变色(转:http://www.w3cplus.com/content/css3-gradient)
    CSS3实现边框锯齿效果
    css3超炫8种loading加载特效
    CSS3:Transition属性详解
    WebApp之Meta标签
    css3渐变色
    转:CSS设置滚动条样式
    使用Composer安装 Laravel 和 ThinkPHP
    laravel 数据库迁移
    sublime text 3 常用插件和配置
  • 原文地址:https://www.cnblogs.com/yanghj/p/13410268.html
Copyright © 2011-2022 走看看