以图明志

PHP服务器脚本

PHP面向对象之旅:简单工厂模式

简单工厂模式是一种很常用的设计模式
简单工厂模式是一种比较简单的设计模式,也是我们常用的设计模式。使用简单工厂模式,能够根据不同的参数,使用不同的工厂,创建不同的对象。简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式。简单工厂模式是由一个工厂类根据传入的参量决定创建出哪一种产品类的实例。

PHP服务器脚本

PHP面向对象之旅:一个接口实例

一个很好的接口学习例子
我们设计一个在线销售系统,用户部分设计如下:将用户分为,NormalUser, VipUser, InnerUser三种。要求根据用户的不同折扣计算用户购买产品的价格。并要求为以后扩展和维护预留空间。用户部分先声明了一个接口User,用户都是User的实现。

PHP服务器脚本

PHP面向对象之旅:接口与组合模拟多继承

在一个类中去将另外一个类设置成属性
在PHP中不支持多重继承,如果我们向使用多个类的方法而实现代码重用有什么办法么?那就是组合。在一个类中去将另外一个类设置成属性。通过把类的特征抽象为接口,并通过实现接口的方式让对象有多重身份,自然就可以完全模拟多重继承了。

PHP服务器脚本

PHP面向对象之旅:instanceof运算符

instanceof运算符可以判断当前实例的类型
在PHP5中,通过方法传递变量的类型有不确定性。于是我们很难判断,一些操作是否可以运行。使用instanceof运算符,可以判断当前实例是否可以有这样的一个形态。当前实例使用 instanceof与当前类,父类(向上无限追溯),已经实现的接口比较时,返回真。

PHP服务器脚本

PHP面向对象之旅:PHP的多态

一个类拥有其父类、和已实现接口的身份
多态这个概念,在Java中指的是变量可以指向的对象的类型,可是变量声明类型的子类。对象一旦创建,它的类型是不变的,多态的是变量。 在PHP5中,变量的类型是不确定的,一个变量可以指向任何类型的数值、字符串、对象、资源等。我们无法说PHP5中多态的是变量。

PHP服务器脚本

PHP面向对象之旅:类型提示

解决PHP弱类型带来的一些类型问题
PHP是弱类型语言,向方法传递参数时候也不太区分类型。这样的使用会引起很多的问题,PHP开发者认为,这些问题应该是由代码书写者在书写代码时进行检验以避免。PHP中提供了一些函数,来判断数值的类型。我们可使用is_numeric()。判断是否是一个数值或者可转换为数值的字符串。

PHP服务器脚本

PHP面向对象之旅:接口的继承

接口可以继承自另外一个接口
在PHP5中,接口是可以继承自另外一个接口的。这样代码的重用更有效了。要注意只有接口和接口之间使用 继承关键字 extends。类实现接口必须实现其抽象方法,使用实现关键字 implements。下面的这个例子定义接口User,User有两个抽象方法 getName和setName。 又定义了接口VipUser, 继承自User接口,并增加了和折扣相关的方法getDiscount。

PHP服务器脚本

PHP面向对象之旅:接口的实现

一个类可以使用 implements 实现接口
一个类可以使用 implements 实现接口,甚至可以实现多个接口。大部分的书说,这样是为了实现PHP的多继承。为什么呢? PHP5是单继承的,一个类只可以继承自一个父类。接口可以实现多个,这样就是多继承了。这样说有些道理。但,既然接口里面的方法没有方法体,所谓的多继承又有什么意义?接口的意义在于多态。

PHP服务器脚本

PHP面向对象之旅:接口与抽象方法

接口是抽象方法和静态常量定义的集合
接口(interface)是抽象方法和静态常量定义的集合。 接口是一种特殊的抽象类,这种抽象类中只包含抽象方法和静态常量。 接口中没有其它类型的内容。 我们先写接口的定义,下面的例子是接口的一个简单写法。下面的例子定义了一个接口 User ,这个接口中有两个抽象方法,getName() 和 setName()。能看到接口的写法和类很相似。

PHP服务器脚本

PHP面向对象之旅:模板模式

抽象类的应用就是典型的模版模式
抽象类的应用就是典型的模版模式,先声明一个不能被实例化的模版,在子类中去依照模版实现具体的应用。 我们写这样一个应用:银行计算利息,都是利率乘以本金和存款时间,但各种存款方式计算利率的方式不同,所以,在账户这个类的相关方法里,只搭出算法的骨架,但不具体实现。具体实现由各个子类来完成。

PHP服务器脚本

PHP面向对象之旅:静态抽象方法

写一个静态抽象方法的示例程序
在PHP5.1中,抽象类中支持静态抽象方法。 下面这个例子,看到静态抽象方法可以声明。实现这个方法时,必须是静态的方法。在PHP5.2.0 的 更新信息中有这样一段话:因为疏漏,在PHP5.0 和 PHP5.1 的类中允许静态抽象方法。在PHP5.2中,只有接口可以拥有静态抽象方法。

PHP服务器脚本

PHP面向对象之旅:抽象类继承抽象类

可以理解为对抽象类的扩展
抽象类继承另外一个抽象类时,不用重写其中的抽象方法。抽象类中,不能重写抽象父类的抽象方法。这样的用法,可以理解为对抽象类的扩展。下面的例子,演示了一个抽象类继承自另外一个抽象类时,不需要重写其中的抽象方法。

PHP服务器脚本

PHP面向对象之旅:抽象方法

抽象方法没有函数体,采用分号结束
用abstract修饰的类表示这个方法是一个抽象方法。抽象方法,只有方法的声明部分,没有方法体。抽象方法没有 {} ,而采用; 结束。一个类中,只要有一个抽象方法,这个类必须被声明为抽象类。抽象方法在子类中必须被重写。

PHP服务器脚本

PHP面向对象之旅:抽象类

抽象类是面向对象的一个重要特性
用abstract修饰的类表示这个类是一个抽象类,用abstract修饰的方法表示这个方法是一个抽象方法。抽象类不能被实例化。抽象方法是只有方法声明,而没有方法的实现内容。用abstract修饰的类表示这个类是一个抽象类。抽象类不能被实例化。这是一个简单抽象的方法,如果它被直接实例化,系统会报错。

PHP服务器脚本

PHP面向对象之旅:PHP中的常量

常量是程序设计中常用的技巧
在PHP5类中继续使用cons修饰常量。我们使用const定义一个常量,定义的这个常量不能被改变。类中的常量使用起来类似静态变量,不同点只是它的值不能被改变。我们使用 类名::常量名 来调用这个常量。

PHP服务器脚本

PHP面向对象之旅:final类和方法

final类的不能被继承性在程序设计中很有用处
如果我们不希望一个类被继承,我们使用final来修饰这个类。这个类将无法被继承。比如我们设定的Math类,涉及了我们要做的数学计算方法,这些算法也没有必要修改,也没有必要被继承,我们把它设置成final类型。
1 / 2 首页 < Prev 1 2 Next > 尾页 页码: