摘要:<?php //当A类需要依赖于B类,也就是说需要在A类中实例化B类的对象来使用时候,如果B类中的功能发生改变,也会导致A类中使用B类的地方也要跟着修改,导致A类与B类高耦合。这个时候解决方式是,A类应该去依赖B类的接口,把具体的类的实例化交给外部。 /** * 为了约束我们先定义一个消息接口中 * Interface Message &
<?php
//当A类需要依赖于B类,也就是说需要在A类中实例化B类的对象来使用时候,如果B类中的功能发生改变,也会导致A类中使用B类的地方也要跟着修改,导致A类与B类高耦合。这个时候解决方式是,A类应该去依赖B类的接口,把具体的类的实例化交给外部。
/**
* 为了约束我们先定义一个消息接口中
* Interface Message
*/
interface Message{
public function seed();
}
/*
* 有一个发送邮件的类
*/
class SeedEmail implements Message{
public function seed(){
return 'seed email';
}
}
/*
* 新增一个发送短信的类
*/
class SeedSMS implements Message{
public function seed(){
return 'seed sms';
}
}
/*
* 订单产生的时候,需要发送消息
*/
class Order{
protected $messager='';
function __construct(Message $message){
$this->messager=$message;
}
public function seed_msg(){
return $this->messager->seed();
}
}
$message=new SeedEmail();
$Order=new Order($message);
$Order->seed_msg();
?>
批改老师:天蓬老师批改时间:2018-11-14 11:43:41
老师总结:写得非常工整,完美,下次试试用容器和外观模式,进行简化