PHP对象与设计

在程序中包含了类的声明,引用,并不能就认为是面向对象。面向对象是一种开发理念。面向对象和面向过程的核心区别是如何分配指责。
过程式编程表现为一系列命令和方法的连续调用,代码中含有很多的条件判断,关联度高。这种自顶向下的控制方式导致了重复和相互依赖的代码遍布于整个项目。面向对象,则将职责移交到专门的对象中,减少代码之间的相互联系。

过程式编程有一下缺点:
1、任何项目,需求是不断变化的,过程式编程,导致代码越来越繁杂,维护性差
2、代码冗余
3、代码阅读,维护,扩展都变得异常艰难。

面向对象编程,一般应该实现,封装,继承,多态。具体的是

1.职责
过程化的编码,控制代码的职责是判断语句。
面向对象的编码,父类的职责是提供规范,判断格式也只有一次,并且不考虑细节。

2.内聚
内聚是一个模块内部各成分之间相关程度的度量。如果组件职责清晰、分工明确,那么代码较为好维护;如果代码之间关联太广,则维护性较差。(因为你想修改某部分代码的同时,要修改相关代码)。

3.耦合
当系统各部分代码紧密绑在一起时,就会产生紧密耦合。高耦合使代码扩展和维护异常艰难,而低耦合基本都是分开的功能模块,维护和扩展都非常方便。

(备注: 高内聚=低耦合)

4、面向对象设计的4个规范
1、代码重复,如果有大量的代码重复,请放到父类或者公共类中去,提供调用。
2、一个类如果处理的功能太多,尽量进行分割,每个类最好保持独立性,在类抽取出来的时候还能单独使用
3、万能类,如果一个类实现了所有功能,请把它分成子类和父类,父类做规范,子类去实现
4、if语句,如果类中包含有大量的if语句,特别是一种条件判断在类中重复出现,就说明这个类需要拆分成多个类。

原文地址:http://blog.51cto.com/13468761/2335860

时间: 2024-08-30 17:36:15

PHP对象与设计的相关文章

Python快速学习10: 循环的对象及设计 (生活的规律)

前言 系列文章:[传送门] 生活逐渐规律,按时睡觉.今天写博客,明天补时间看会书.慢慢的时间很珍惜 我很喜欢! 时钟就像个循环体,我们将它融入生活. 正文 循环对象的并不是随着Python的诞生就存在的,但它的发展迅速,特别是Python 3x的时代,循环对象正在成为循环的标准形式. 灵活的循环方式 (我晚饭后爱上了萨克斯,因为这是生活的一部分.属于我的特殊循环对象,它的按键就像循环方式,然后出来一首美丽的歌曲) 我的萨克斯偶像 循环对象 循环对象是这样一个对象,它包含有一个next()方法(_

服务返回对象的设计

服务返回对象的设计 服务层的定义 本文中,服务层指暴露给其他进程调用的外部接口的集合. 英文单词含义 service:服务response:服务返回对象request:服务请求对象 服务调用模型 在同一个线程内,现代计算机语言一般会提供异常捕获(try-catch)机制,模型如图1 . 在这个模型中,response只需包含业务数据, 异常情况用异常捕获机制处理. ----------------- request / / response ------------> / service / -

投稿007期|令人震惊到发指的PyObject对象代码设计之美

前言 最近在重温经典漫画<SlamDunk>的全国大赛篇,其中的一个情形可以很好的诠释虎躯一震这个状态--当樱木看到流川枫一次高难度投篮时内心的感受:"经过两万次射球练习后,樱木首次明白到流川枫这一球是相当厉害的,那正是他在两万次射球练习之中,经常在他脑海中出现的理想射球姿势". 言归正传,其实对大多数程序开发人员来说,以上这个场景的感慨状态有时候也出现在我们看到经典代码的时候.最近正在思考关于Python语言的源生设计机制,有个问题不知道大家是否也有思考过:我们知道Pyt

向集合中存储自定义对象是,自定义对象的设计

自定义对象 通过对List.Set.Map 集合的操作,发现集合的不同,自定义类的定义也有所差异 1.List集合中的自定义对象 由于List底层判断集合是否相同依赖的是equals方法,所以在自定义类时要覆盖equals方法 示例: //自定义类Person class Person{ private String name; private int age; Person(String name, int age){ this.name = name; this.age = age; } p

ARPG客户端中场景对象体系设计

一.场景对象体系 二.场景对象生命周期管理 场景对象的生命周期,不适合采用原始的c++管理方式, 即由使用者自己负责删除.而应该采用引用计数方式, 自动负责删除. 采用引用计数方式, 目前用法比较广的分两类: 1.智能指针, 如boost::shared_ptr, 这种方式原理是基于c++对象的生命周期和析构函数来实现的, 而且引用计数是由智能指针对象保存的.在这种方式下, 对象的传递和引用都是使用智能指针对象, 例如: class A; typedef boost::shared_ptr<A>

Redis对象的设计与实现

一.Redis对象结构Redis中的每个对象都由一个redisObject结构表示: typedef struct redisObject { unsigned type;//类型 unsigned encoding;//编码 void *ptr;//指向底层实现数据结构的指针 int refcount;//引用计数 unsigned lru;//对象最后一次被程序访问的时间 } 1. type:Redis对象类型redisObject的'type'属性记录了对象的类型: type命令:返回键对

JAVA程序设计(11)-----面对对象初级设计 麻将 创建麻将牌 然后洗牌 发牌~ 恩 就这样

zzzzZZZZ 1.开始还想贴图的 实在太懒了-- 这是一张麻将 package com.lovo; import java.awt.Graphics; import java.awt.Image; /** * 类 : 麻将牌 * @author Abe 属性:花色 点数 图片 */ public class Mahjong { private Suite suite; private int face; private Image image; /** * 构造器 * * @param su

python-面向对象编程设计与开发

编程范式 1.对不同类型的任务,所采取不同的解决问题的思路. 2.编程范式有两种 1.面向过程编程 2.面向对象编程 面向过程编程 什么是面向过程编程? 过程--解决问题的步骤 要解决一个大的问题 1.先把大问题拆分成若干小问题或子过程. 2.然后子过程再拆分成小问题或子过程 3.直到小问题可以在一个小步骤的范围内可以解决. 有什么优点和缺点? 优点:把复杂的问题流程化,编程难度低. 缺点:可扩展性差 写代码: 写一个简单的用户注册程序 # 1 写一个用户注册程序 # 面向过程编程方法: # 1

写给自己看的小设计5 - 对象设计过程之设计目标

浏览完代码设计中对象设计的核心准则和扩展原则后,最后我们再回头看看另外一个原则不像原则,规则不像规则,模式不像模式,实践不像实践的四不像原则 - GRASP原则. 说到对象设计原则,就不能不提GRASP原则,但是从我来看,这个原则完全不是原则,而是设计过程. GRASP,全称为General Responsibility Assignment Software Pattern,即通用职责分配软件模式,它由<UML和模式应用>(Applying UML and Patterns)一书作者Crai