zoukankan      html  css  js  c++  java
  • S5:桥接模式 Bridge

    将抽象的部分与实现的部分分离,使它们都可以独立变化.
    抽象与实现的分离,指的是抽象类和派生类用来实现自己的对象.实现系统可能有多角度分类,每一种分类都有可能变化,那么就把这种多角度分离出来,让他们独立变化,减少他们之间的耦合.

    合成/聚合复用原则:尽量使用合成/聚合,尽量不要使用类继承.
    聚合是一种弱拥有关系,A对象可以包含B对象,但B对象不是A对象的一部分.
    合成是一种强拥有关系,体现了严格的部分整体关系,部分和整体生命周期一致.

    UML:

    示例代码:

    abstract class Phone
    {
        protected $audio;
    
        public function __construct(Audio $audio)
        {
            $this->audio = $audio;
        }
    
        abstract public function output();
    }
    
    class Iphone extends Phone
    {
        public function output()
        {
            $this->audio->play();
        }
    
    }
    
    abstract class Audio
    {
        abstract public function play();
    }
    
    class HiFi extends Audio
    {
        public function play()
        {
            echo "HIFI play";
        }
    
    }
    
    $phone = new Iphone(new HiFi());
    $phone->output();
    

      

    将手机和手机的播放音乐,都分离开来.两者均可独立变化.

  • 相关阅读:
    树状数组进阶
    vscode远程连接linux服务器
    常用的协议以及协议相对应的端口号
    C++四种强制类型转化
    口胡(然而有代码)<第二章>
    11.TED演讲:如何赚更多钱?读后感
    tomcat一些认识
    压测ab
    mysql 加表字段
    最短Hamilton路径
  • 原文地址:https://www.cnblogs.com/itfenqing/p/7787967.html
Copyright © 2011-2022 走看看