• 程序设计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

    依赖倒置原则

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

    接口隔离原则

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

    迪米特法则

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

    开闭原则

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

  • 相关阅读:
    设计模式-命令模式
    Vue路由与nodejs环境搭建
    猜名次(附完整代码)
    【示波器专题】示波器触发电路原理
    USACO21FEB Modern Art 3 G
    Ajax--初识Ajax--接口和案例 - 图书管理
    线性DP算法的实现
    Aspose.Cells 单元格格式设置 如设置为数字
    查询IP地址可得到哪些信息
    5G智能制造食品工厂数字孪生可视化平台,推进食品行业数字化转型
  • 原文地址:https://blog.csdn.net/u014559227/article/details/126222004