门面模式

门面模式,别名外观模式。为客户端提供一个统一的接口,客户端不需要知晓接口调用的具体类,甚至可以封装成静态调用方式,参数也是自由传递。

<?php
abstract class Facade{
	public static function __callStatic($method, $args)
    {
        $food = static::getFacade();
        $instance = new $food();
        return call_user_func_array([$instance, $method], $args);
    }
}

class Food extends Facade{
	public static function getFacade(){
		//具体门面类选择使用哪种类
		return 'ChineseFood';
	}
}

class ChineseFood{
	public function eat() {
		return 'noodles';
	}

	public function drink() {
		return 'soup';
	}
}

class AmericanFood{
	public function eat() {
		return 'hamburg';
	}

	public function drink() {
		return 'coke';
	}
}

class EuropeanFood{
	public function eat() {
		return 'bread';
	}

	public function drink() {
		return 'milk';
	}
}

class Holiday{
	public function haveAMeal() {
		echo 'I want to eat ' . Food::eat(). ' and drink ' . Food::drink();
	}
}

//client
$holiday = new holiday();
$holiday->haveAMeal();


清明节假期到了,媳妇回娘家了,一个人吃点啥呢,就用这个模式选择吧。

最后总结:

优点:

对客户端屏蔽了子系统组件,实现了松耦合,方便随时更换子系统。

缺点:

接口封装了一切,系统决定了使用哪种具体类,客户端对子系统的实现不够了解。比如存储使用文件、nosql还是mysql。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值