首页 > 代码库 > 理解契约式编程
理解契约式编程
重要概念
抽象类:
当类中有一个方法为抽象方法,该类即为抽象类。继承一个抽象类时,应该实现其所有的抽象方法。
<?phpabstract class car{ protected $name; protected $speed; public function __construct($name, $speed) { $this->name = $name; $this->speed = $speed; } abstract function run(); public function __get($k) { if(in_array($k, array(‘name‘))) { trigger_error("禁止访问私有成员:" . $k, E_USER_ERROR); return; } return $this->$k; }}?>
接口:
接口定义了一系列必要的操作,实现接口的类必须实现接口的方法。
<?phpinterface people{ public function say();}
<?phpinclude ‘people.interface.php‘;class worker implements people{ private $name; private $age; public function __construct($name, $age) { $this->name = $name; $this->age = $age; } public function say() { echo $this->name . ‘, age is ‘ . $age . ‘<br />‘; } public function __get($k) { if($k == ‘name‘) { trigger_error("禁止访问私有成员:" .$k, E_USER_ERROR); return; } return $this->$k; }}?>
契约式编程
使用抽象类和接口实现契约式编程,这样可以使结构更加清晰,扩展性高。适合团队开发,例如可以通过定义一个数据库操作模型模块,使所有需要操作数据库的模块派生类都必须实现模型中的方法,这样就实现了数据层与控制层的分离,编写控制层只需要有数据层的文档即可知道基本操作。
如何使用抽象类?
抽象类定义基本方法,而具体的功能实现交给具体的类,当需要更换操作时,只需要重写抽象类中的基本方法。
如何使用接口?
接口是用来约束一个类型,实现面向对象编程的多态性。定义一个类型,而这个类型会派生很多的类型,但是这些类型都需要有基类的这些操作。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。