类的接口与代码模块化

接口是模块化编程的基础,它是各模块之间的通信媒介。 什么叫接口?接口,inerface,类的内外部交互函数,也可以把它视作一个数据缓冲器。 为什么要做接口?便于数据的统一管理。一个最实用的例子就是输入数据的有效性检测。 下面看一段例程: ———— PHP代码 ————[color=#000000] [color=#0000bb] [/color][color=#0000bb]x[/color][color=#007700]=[/color][color=#0000bb]0[/color][color=#007700]; [/color][color=#0000bb]$this[/color][color=#007700]->[/color][color=#0000bb]y[/color][color=#007700]=[/color][color=#0000bb]0[/color][color=#007700]; } function [/color][color=#0000bb]show[/color][color=#007700]() { [/color][color=#0000bb]$z[/color][color=#007700]= [/color][color=#0000bb]$this[/color][color=#007700]->[/color][color=#0000bb]x [/color][color=#007700]+ [/color][color=#0000bb]$this[/color][color=#007700]->[/color][color=#0000bb]y[/color][color=#007700]; echo [/color][color=#0000bb]$z[/color][color=#007700]; } } [/color][color=#0000bb]$a [/color][color=#007700]= new [/color][color=#0000bb]a[/color][color=#007700]; [/color][color=#0000bb]$a [/color][color=#007700]-> [/color][color=#0000bb]x [/color][color=#007700]=[/color][color=#0000bb]2[/color][color=#007700]; [/color][color=#0000bb]$a [/color][color=#007700]-> [/color][color=#0000bb]y [/color][color=#007700]=[/color][color=#0000bb]3[/color][color=#007700]; [/color][color=#0000bb]$a [/color][color=#007700]-> [/color][color=#0000bb]show[/color][color=#007700](); [/color][color=#0000bb]?> [/color] [/color] ———————————— 这是一个简单的加法类,它的类成员有: 属性:x y 操作数。 方法:show()显示结果。 在这段例程中,虽然我们得到了正确的结果,但数据的输入没有用到接口,而是直接附值给类的成员变量x y 。 再看一个实例化: ———— PHP代码 ————[color=#000000] [color=#0000bb] [/color][color=#0000bb]x [/color][color=#007700]=[/color][color=#dd0000]"*dk"[/color][color=#007700]; [/color][color=#0000bb]$a [/color][color=#007700]-> [/color][color=#0000bb]y [/color][color=#007700]=[/color][color=#dd0000]"rty"[/color][color=#007700]; [/color][color=#0000bb]$a [/color][color=#007700]-> [/color][color=#0000bb]show[/color][color=#007700](); [/color][color=#0000bb]?> [/color] [/color] ———————————— 得到结果为0。 直接使用类成员变量,只能从外部控制输入数据的有效性,使类的封装性大打折扣。 在真正面向对象编程中,类成员变量是受保护的,不允许被外部程序使用。 一个真正的类应该把所有对象的属性和方法都包装起来,仅留下接口供外部使用。 改写上面的例程: ———— PHP代码 ————[color=#000000] [color=#0000bb] [/color][color=#0000bb]x[/color][color=#007700]=[/color][color=#0000bb]0[/color][color=#007700]; [/color][color=#0000bb]$this[/color][color=#007700]->[/color][color=#0000bb]y[/color][color=#007700]=[/color][color=#0000bb]0[/color][color=#007700]; } function [/color][color=#0000bb]validate[/color][color=#007700]()[/color][color=#ff8000]//检测有效性 [/color][color=#007700]{ if(![/color][color=#0000bb]preg_match[/color][color=#007700]([/color][color=#dd0000]"/^[d]+$/"[/color][color=#007700],[/color][color=#0000bb]$this[/color][color=#007700]->[/color][color=#0000bb]x[/color][color=#007700])) { echo [/color][color=#dd0000]"x不是数字"[/color][color=#007700]; return [/color][color=#0000bb]false[/color][color=#007700]; } if(![/color][color=#0000bb]preg_match[/color][color=#007700]([/color][color=#dd0000]"/^[d]+$/"[/color][color=#007700],[/color][color=#0000bb]$this[/color][color=#007700]->[/color][color=#0000bb]y[/color][color=#007700])) { echo [/color][color=#dd0000]"y不是数字"[/color][color=#007700]; return [/color][color=#0000bb]false[/color][color=#007700]; } return [/color][color=#0000bb]true[/color][color=#007700]; } function [/color][color=#0000bb]showAdd[/color][color=#007700]() [/color][color=#ff8000]//显示相加结果 [/color][color=#007700]{ [/color][color=#0000bb]$z[/color][color=#007700]= [/color][color=#0000bb]$this[/color][color=#007700]->[/color][color=#0000bb]x [/color][color=#007700]+ [/color][color=#0000bb]$this[/color][color=#007700]->[/color][color=#0000bb]y[/color][color=#007700]; echo [/color][color=#0000bb]$z[/color][color=#007700]; } function [/color][color=#0000bb]input[/color][color=#007700]([/color][color=#0000bb]$x[/color][color=#007700],[/color][color=#0000bb]$y[/color][color=#007700]) [/color][color=#ff8000]//输入接口 [/color][color=#007700]{ [/color][color=#0000bb]$this[/color][color=#007700]->[/color][color=#0000bb]x [/color][color=#007700]= [/color][color=#0000bb]$x[/color][color=#007700]; [/color][color=#0000bb]$this[/color][color=#007700]->[/color][color=#0000bb]y [/color][color=#007700]= [/color][color=#0000bb]$y[/color][color=#007700]; if(![/color][color=#0000bb]$this[/color][color=#007700]->[/color][color=#0000bb]validate[/color][color=#007700]()) return [/color][color=#0000bb]false[/color][color=#007700]; return [/color][color=#0000bb]true[/color][color=#007700]; } } [/color][color=#0000bb]$a [/color][color=#007700]= new [/color][color=#0000bb]a[/color][color=#007700]; if([/color][color=#0000bb]$a [/color][color=#007700]-> [/color][color=#0000bb]input[/color][color=#007700]([/color][color=#dd0000]"aaa"[/color][color=#007700],[/color][color=#dd0000]"rty"[/color][color=#007700])) [/color][color=#0000bb]$a [/color][color=#007700]-> [/color][color=#0000bb]showAdd[/color][color=#007700](); if([/color][color=#0000bb]$a [/color][color=#007700]-> [/color][color=#0000bb]input[/color][color=#007700]([/color][color=#0000bb]1[/color][color=#007700],[/color][color=#0000bb]4[/color][color=#007700])) [/color][color=#0000bb]$a [/color][color=#007700]-> [/color][color=#0000bb]showAdd[/color][color=#007700](); [/color][color=#0000bb]?> [/color] [/color] ———————————— 当检测到数据不合法时程序中止运行,以免得到不可意料的结果。 现在你可以给类增加一些方法:减法、剩法、除法。感受一下使用接口带来的好处:)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值