解耦的简单理解

重用性是面向对象设计的主要目标之一,而紧耦合便是它的敌人。当我们看到系统中一个组件的改变迫使系统其他许多地方也发生改变的时候,就可以诊断为紧耦合了。
简单实现代码:

class RegistrationMgr
{
    public function register(Lesson $lesson){
        //处理该课程
        //通知某人
        $notifier = Notifier::getNotifier();
        $notifier->inform("new lesson: cost ({$lesson->cost()})");
    }
}

abstract class Notifier
{
    static function getNotifier()
    {
        //根据配置或其他逻辑获得具体的类
        if(rand(1,2) == 1){
            return new MailNotifier();
        }else{
            return new TextNotifier();
        }
    }

    abstract function inform($message);
}

class MailNotifier extends Notifier
{
    public function inform($message)
    {
        print "MAIL notification : {$message} \n";
    }
}

class TextNotifier extends Notifier
{
    public function inform($message)
    {
        print "TEXT notification : {$message} \n";
    }
}

$lessons1 = new Seminar(4, new TimedCostStrategy());
$lessons2 = new Lecture(4, new FixedCostStrategy());
$mgr = new RegistrationMgr();
$mgr->register($lessons1);
$mgr->register($lessons2);

代码解耦的方式暗含 策略设计模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值