当前位置: 首页 > 后端技术 > PHP

面向对象编程的oop与设计模式初探

时间:2023-03-29 14:06:52 PHP

1.编程方式我们目前的编程方式一般可以有以下三种编程方式:顺序编程过程式编程面向对象编程说到面向对象编程,先说说什么是顺序编程,什么是过程式编程,什么是面向对象编程:顺序编程:就是只用单线程执行一段代码,执行过程根据代码从上到下依次执行各种指令操作。Proceduralprogramming:过程式程序的编程中心是围绕着代码。例如,当程序执行到某个位置时,回调调用另一个方法来实现剩余的业务逻辑,然后程序继续执行。这就是过程编程。更笼统地说,使用函数编写代码属于过程式编程。在更深层次上,例如,一些PHP开发人员虽然使用类的概念来编写程序,但他们仍然以区域过程的方式进行编程。Doris身边的大部分同事都是这样,包括doris在理解面向对象程序设计之前也是以过程化的方式写程序的。面向对象编程:通俗地说,就是我们的程序员在写程序的时候,设计了N个以上的对象(工人)来分工合作完成某项任务。这就是面向对象编程。这里说的是设计多个对象,那我们怎么设计呢?这是doris对面向对象的看法总结,以及他日常工作的一些总结,在接下来的一段时间里分享给大家。2.为什么面向对象编程2.1更容易解决问题计算机程序旨在解决人类问题。它的策略是把大问题拆分成小问题一个一个解决,而面向对象通俗的说就是这个原理,把大而复杂的问题拆分成小的个体然后组装起来就可以让这个复杂的问题一个一个解决,这是模块化的设计风格。您可能认为模块化看起来并不难。是的,问题越复杂,模块化就越有意义。所以,OOP编程的出发点绝对不是把复杂的问题复杂化,而是把复杂的问题简单化。即使是最困难的编程问题也可以使用这种分而治之的策略来解决。2.2更快的开发和修改面向对象编程的优越性尤其体现在团队合作上。我们可以将一个大问题拆分成许多小问题。模块的目的是解决更复杂问题的某个方面。我们得到了面向对象编程的第一个原则(也就是单一职责原则),把这些小问题(意思是代码结构)组装起来,然后把这些小问题分配给其他开发人员开发。这样可以大大提高开发效率,同时将开发者之间的代码冲突降到最低。与OPP类似,过程式编程也使用模块和重用。但是,过程式编程不提供类(使用类,贬义地说,可以将任务包装成对象)。类对象(类实例)可以处理自己的数据结构,这是函数无法单独完成的,因此如果使用过程编程,完成大型任务通常需要很长的序列。另外,使用过程化编程时,团队合作也比较困难,因为不同的团队成员不能像OPP那样轻松处理独立的单个相互关联的类。3、为什么面向对象这么难如果你问doris为什么面向对象这么难,就像问doris为什么架构师的薪水那么高,却很少有人能做到。因为面向对象编程需要对编程经验进行提炼,越有经验的面向对象编程的设计就越灵活,这里所说的经验是指使用面向对象编程的经验,而不是上面说的顺序编程和编程。程序化编程经验。面向对象编程对业务和代码架构有一定的要求。所有的程序设计都离不开业务逻辑。在学习OOP和设计模式时,需要记住:设计面向对象的软件很难设计可重用的面向对象的软件更难从这里应该可以看出为什么OPP和设计模式这么有意义。知识增加了技能的价值,获得的难度越大,它的价值就越大。4.如何学习OOP思维和设计模式不要指望能够轻松快速的掌握OOP和设计模式,而是要在你的编程中逐渐渗透,一个一个地结合起来,总有一天你会发现它的价值.久而久之,你的技能就会越来越多,理解也会越来越深刻。您可能会遇到一个项目,您可以在其中重用另一个先前项目的大部分程序结构。5、面向对象程序设计的基本原则在使用面向对象程序设计时,我们必须记住以下基本原则(即设计面向对象程序的基本原则),这样才能更好地理解对象的深层含义——面向编程。5.1单一职责原则基于低耦合高内聚的原则,一个类做一件事情。对于单一职责原则,其核心思想是:一个类,最好只做一件事,并且只有一个引起它的变化。单一职责原则可以看作是低耦合高内聚在面向对象原则上的延伸,将职责定义为变化的原因,从而提高内聚,减少变化的原因。如果职责过多,可能导致其发生变化的原因较多,从而导致职责之间存在依赖关系,相互影响,从而极大地破坏其内聚性和耦合性。通常意义上的单一职责意味着只有一个单一的功能。不要为类实现太多的功能点,以保证实体只有一个改变的原因。5.2开放封闭原则当我们软件的实际应用发生变化,出现新的需求时,我们需要对模块进行扩展以满足新的需求!更改闭包是指我们在扩展模块时,不需要修改源程序代码和DLL,也不需要重新编译文件!这个原则在我们设计类的时候很有帮助。要坚持这个原则,就要尽可能的考虑接口封装、抽象机制和多态技术!通俗地说就是:对扩展开放,对修改关闭5.3里氏代换原则(LSP),就是我们依赖父类接口,在客户端声明一个父类接口,通过它的子类来实现。这时候就要求子类必须能够替换父类出现的任何地方。这样做的好处是在根据新需求扩展父类接口的新子类时,不影响当前客户端的使用!5.4依赖倒置原则在传统的结构化编程中,顶层模块通常依赖于下面的子模块,也称为高层对低层的依赖!所以DIP原则就是把这种依赖倒过来,让高层模块不依赖低层模块,所以叫依赖倒置原则!通俗一点就是(面向接口编程)5.5ISP接口隔离原则这个原则的意思是:使用多个专门的接口比使用单一的接口要好得多!为了减少接口的定义,很多类似的方法都放在一个接口中。最后发现在接口的维护和实现上花费了太多精力,接口定义的操作相当于对客户端的承诺。当然,承诺越少越好,越简洁越好,太多的承诺会给你带来大量的精力和时间去维护!超过!