首页 > 代码库 > 理解契约式编程

理解契约式编程

重要概念

抽象类:

当类中有一个方法为抽象方法,该类即为抽象类。继承一个抽象类时,应该实现其所有的抽象方法。

<?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;    }}?>

 

契约式编程

 

使用抽象类和接口实现契约式编程,这样可以使结构更加清晰,扩展性高。适合团队开发,例如可以通过定义一个数据库操作模型模块,使所有需要操作数据库的模块派生类都必须实现模型中的方法,这样就实现了数据层与控制层的分离,编写控制层只需要有数据层的文档即可知道基本操作。

 

如何使用抽象类?

 

抽象类定义基本方法,而具体的功能实现交给具体的类,当需要更换操作时,只需要重写抽象类中的基本方法。

 

如何使用接口?

 

接口是用来约束一个类型,实现面向对象编程的多态性。定义一个类型,而这个类型会派生很多的类型,但是这些类型都需要有基类的这些操作。