• 程序设计6大原则


    在程序设计中,我们往往要遵循着六个原则:

    单一职责原则

    就一个类而言,应该有且仅有一个引起它变化的原因。
    避免一个类负责多个功能的实现,当发生更改时影响其他功能而致使复用成为不可能。

    里氏替换原则

    派生类(子类)对象能够替换其基类(父类)对象被调用。
    即在程序中,任何调用基类对象实现的功能,都可以调用派生类对象来替换。
    例子:
    一个人可以实现沟通交流、吃东西、喝水等操作。
    而一个人的派生类有中国人,日本人等

    abstract class Personal
    {
        public function __construct(
            //姓名
            public string $name,
            //年龄
            public int $age,
            //性别
            public string $sex
        ){}
    
        public abstract function eat();
    
        public abstract function drink();
    
        public abstract function say();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    //中国人
    class ChinaPersonal extends Personal
    {
        public function eat()
        {
            return "中华五千年美食";
        }
    
        public function drink()
        {
            return "喝矿泉水";
        }
    
        public function say()
        {
            return "说汉语";
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    //日本人
    class JapanPersonal extends Personal
    {
        public function eat()
        {
            //狗改不了吃屎
            return "吃屎";
        }
    
        public function drink()
        {
            //片子多
            return "你们懂得";
        }
    
        public function say()
        {
            return "雅蠛蝶";
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    
    class PersonalBehavior
    {
        public Personal $personal;
    
        public function __construct(Personal $personal)
        {
            $this->personal = $personal;
        }
    
        public function eat()
        {
            return $this->personal->eat();
        }
    
        public function drink()
        {
            return $this->personal->drink();
        }
    
        public function say()
        {
            return $this->personal->say();
        }
    
    
    }
    
    
    $chinaPersonal = new ChinaPersonal("谭勇",27,"男");
    
    $chinaPersonalBehavior = new PersonalBehavior($chinaPersonal);
    
    $japanPersonal = new JapanPersonal("大岛丈",100,"男");
    
    $japanPersonalBehavior = new PersonalBehavior($japanPersonal);
    
    echo "china personal eat: " . $chinaPersonalBehavior->eat() . PHP_EOL;
    echo "japan personal eat: " . $japanPersonalBehavior->eat();
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40

    依赖倒置原则

    程序设计应该依赖抽象接口,而不应该依赖具体实现。
    即接口编程思想,接口是稳定的,实现是不稳定的,一旦接口确定,就不应该再进行修改了。根据接口的实现,是可以根据具体问题和情况,采用不同的手段去实现。

    接口隔离原则

    使用多个隔离接口,比使用单个接口要好。
    经常提到的降低耦合,降低依赖,主要也是通过这个原则来达到的

    迪米特法则

    一个实体应当尽可能少的与其他实体之间发生相互作用。(可以降低耦合)

    开闭原则

    程序的设计应该是不约束扩展,即扩展开放,但又不能修改已有功能,即修改关闭。

  • 相关阅读:
    MATLAB 的 figure 用法总结
    浏览器缓存学习笔记
    Java手写大数乘法算法和大数乘法算法应用拓展案例
    为了提高出图效率,我做了一款可视化制作气泡图谱的小工具
    Hyperledger Fabric无排序组织以Raft协议启动多个Orderer服务、TLS组织运行维护Orderer服务
    一级造价工程师(安装)- 计量笔记 - 第六章第二节自动控制系统
    Go:实现SMTP邮件发送订阅功能(包含163邮箱、163企业邮箱、谷歌gmail邮箱)
    KT148A语音芯片的下载板子导入F1A声音下载操作多次只成功一次都没有声音
    CRC(循环冗余校验码的校验方法)
    剑指 Offer 06. 从尾到头打印链表
  • 原文地址:https://blog.csdn.net/u014559227/article/details/126222004