首页 后端开发 php教程 OOP思想与设计

OOP思想与设计

Dec 01, 2016 am 11:50 AM
oop

 OOP——面向对象编程。OOP思想,则是指面向对象本身的思想理念。而OOP设计,则并不是指将代码均封装成类就可以了。因为,如果那样,那仅是指面向对象编程。

        OOP——面向对象编程,只是一种做法。OOP思想才是根本。重要的不是做法,而是实际要实现的目标。

        JAVA语言总是能绝大部分实现面向对象的目标。原因相当简单。那是因为语言本身的限制。

        JAVA的一切均需要在类中。不允许类外部的单独的函数。设计模式,即是因为JAVA的产生才有的。从这一点说,JAVA改变了软件世界的思想。

        OOP的目标,是要使得代码符合SOLID原则。这些原则,在所有讲解设计模式的著作的开篇均会被介绍。

        但这是理论目标。实际的目标,则是要回答,我们为什么要这么做。因为,我们对未来总是未知的。我们不清楚需求会发生什么变化。我们今天或许在有限时间之内只能提供一个简易的版本。但日后肯定要扩展。我们所做的或许在今天已经涵盖了一切,但有一天,我们会发现,还有一个部件,没有被考虑进去。

        如果没有面向对象,那么,我们用最简单的switch case结构已经完成了。正因为如此,我们不得不重新修改我们的核心代码。但是,如果我们的代码符合SOLID原则,那么,我们要做的,无非是为现有代码添加一个新的CLASS。

        不难发现:插件思想,源于OOP。那么,此时如果我们再看OOP,那不仅是将散乱的代码封装成类的问题了。

        我们需要遵循SOLOD原则,明确何为抽象,何为具体。我们虽只提供有限的针对具体问题的代码,但它们全部依赖于整体的抽象。再有同类新的具体问题,我们就是只要添加类。这是设计模式思想的核心。

        OOP设计,远非如此。代码可读性,可维护性,还在于目录于文档。表面上,这都不是重要的细节。但实际是极为重要的。特别是针对某一问题的核心模块的设计,或者,设计一个PHP开发框架。目录的可读性,或是否符合OOP,则很大程度上决定了人们对它的理解的速度,以及愿意接受的程度。比如SYSMFONY的目录结构就不是很好。尽管是老牌的,早期占领市场较大。但仍然被一些新的框架所瓜分市场。回过头来,那些代码设计得并不是相当优秀的,比如KOHANA,CI却相当易于被人接受,关于也是与它的目录结构有关。这也是国内一些框架能够被用户接受的原因。并不是单一的因为,它是中文版的。

        由此可见,OOP设计的思想,并不只是在代码方面,而是架构,设计的全方位。

        Php框架的问题,绝大多数是因为,开源的系统,没有真正经历过超大项目的有足够经验的人作为架构师。这是相当情有可原的。但是,如果一个企业做开源,运作多年后,系统越做越大,则越做越复杂,而不能够有一个明确的易于上手易于维护的架构,则是一种悲哀。

        有人说,这些企业可以利用这一点,针对那些需要进行二次开发的客户挣钱。其实,挣这样的钱,永远是有限的。因为,一个好的核心架构,将会带来真正的软件产业化。并且会节省大量成本。

        其实,把话说回来,开发框架实际是相当的简单的东西。简单到可以用一两句话来概括:一是提供不同的类库供用户调用,让用户少写代码。二是让用户轻松增加自己需要的插件,减轻用户的开发。这实际上是相互调用的关系统。MVC系统中,纯OOP的框架,后者就是框架调用用户的代码。而这一方面,最为突出的即是用户界面组件。PHP在大量的这一类的框架。但都是非常的初级。没有一个能与JAVA中的FCS,或TYPESTRY相比的。甚致一些初学者还能发布一个200KB不到的标签引擎。代码不用看,就可以想象得出来,绝不会有设计模式,更不可能遵循SOLID原则。那么,扩展,维护都将是相当大的问题。

        于是我们想到,有多少互联网企业,他们的网站是PHP的,表面上来看,PHP似乎会降低成本,但能降低到多少?关键还是在于从OOP代码到OOP架构,OOP架构的层次,决定了技术部门开发的效率与成本。


本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

'PHP面向对象编程入门:从概念到实践” 'PHP面向对象编程入门:从概念到实践” Feb 25, 2024 pm 09:04 PM

什么是面向对象编程?面向对象编程(OOP)是一种编程范式,它将现实世界中的实体抽象为类,并使用对象来表示这些实体。类定义了对象的属性和行为,而对象则实例化了类。OOP的主要优点在于它可以使代码更易于理解、维护和重用。OOP的基本概念OOP的主要概念包括类、对象、属性和方法。类是对象的蓝图,它定义了对象的属性和行为。对象是类的实例,它具有类的所有属性和行为。属性是对象的特征,它可以存储数据。方法是对象的函数,它可以对对象的数据进行操作。OOP的优点OOP的主要优点包括:可重用性:OOP可以使代码更

Golang 函数在面向对象编程中的应用 Golang 函数在面向对象编程中的应用 May 31, 2024 pm 07:36 PM

Go函数可作为对象的方法使用。方法是与对象关联的函数,可访问对象的字段和方法。在Go中,使用func(receiver_type)identifier(parameters)return_type语法定义方法。这种方法提供了封装、重用和可扩展性,从而在面向对象编程中发挥了重要作用。

PHP OOP 中函数的使用:问与答 PHP OOP 中函数的使用:问与答 Apr 10, 2024 pm 09:27 PM

PHPOOP中函数有两种类型:类方法和静态方法。类方法属于特定类,由该类实例调用;静态方法不属于任何类,通过类名调用。类方法使用publicfunction声明,静态方法使用publicstaticfunction声明。类方法通过对象实例调用($object->myMethod()),静态方法直接通过类名调用(MyClass::myStaticMethod())。

PHP 对象关系映射与数据库抽象层在现代 Web 开发中的演变 PHP 对象关系映射与数据库抽象层在现代 Web 开发中的演变 May 06, 2024 pm 03:51 PM

PHP中ORM与DAL的演变:ORM将数据库表映射为PHP对象,简化了操作,但可能影响性能和灵活性。DAL提供数据库操作的抽象,增强了可移植性,但会增加接口复杂度和降低效率。ORM例如LaravelEloquent可用于CRUD操作,而PDODAL则采用参数化查询以提高安全性。根据项目要求选择合适的工具,以优化应用程序的性能、可移植性和安全性。

PHP OOP 函数重载详解 PHP OOP 函数重载详解 Apr 11, 2024 am 11:06 AM

PHP并不支持函数重载,但可以通过创建具有相同名称但不同参数签名的类方法来模拟函数重载。该方法允许在同一类中为具有相同功能的函数提供不同的实现。

PHP OOP 函数的命名约定与规范 PHP OOP 函数的命名约定与规范 Apr 11, 2024 am 10:36 AM

PHPOOP函数命名约定包括使用帕斯卡命名法(类名和接口名大驼峰)和下划线(成员变量、常量、函数和方法名)。命名规范规定了访问控制符的使用(public、protected和private)和前缀约定(双下划线表示私有、单下划线表示受保护)。实战示例展示了如何根据这些约定来定义类、成员变量和方法。

PHP OOP 函数的生命周期详解 PHP OOP 函数的生命周期详解 Apr 12, 2024 am 11:00 AM

PHPOOP函数的生命周期有四个阶段:1.声明;2.引用;3.执行;4.销毁。声明时,函数的生命周期开始;引用时,函数被调用并执行;执行时,函数代码块被执行;销毁时,函数变量和局部变量被销毁。

在PHP中使用OOP编写强大的应用程序 在PHP中使用OOP编写强大的应用程序 Jun 19, 2023 pm 03:35 PM

在PHP中使用OOP编写强大的应用程序随着Web应用程序越来越复杂,使用面向对象编程(OOP)来编写应用程序变得越来越流行。OOP提供了一种方式来组织代码,使其更加可维护和易于扩展。PHP是一种非常流行的Web编程语言,因为它非常灵活,易于学习,并且具有大量的库和工具可供使用。在本文中,我们将介绍如何在PHP中使用OOP编写强大的应用程序。1.理解OOP的概

See all articles