<?php /** * 2.5 外观模式 * 定义: * 为子系统中的一组接口提供一个一致的界 * 面,Facade模式定义了一个高层接口,这 * 个接口使得这一子系统更加容易使用。 * 角色: * 1. 外观类 * 职责:知道哪些子系统类负责处理请 * 求,将客户的请求代理给适当 * 的子系统对象。 * 2. 子系统类 * 职责:实现子系统的功能,处理外观 * 对象指派的任务,注意子类中 * 没有外观对象任何信息,即没 * 有对外观对象的引用。 * * 优点: * 1. 它对客户屏蔽子系统组件,因而减少了 * 客户处理对象的数目,并使得子系统使 * 用起来更加方便; * 2. 它实现了子系统与客户之间的松耦合关 * 系,而子系统内部的功能组件往往是紧 * 密耦合的,这样当子系统功能组件发生 * 变化的时候,只需要修改外观类的实现 * 就可以了,避免了程序代码的“散弹式” * 修改。 * 3. 同时,外观类并不限制客户直接使用子 * 系统的功能组件,如果客户想使用子系 * 统的更加高级的功能,可以越过外观类 * 直接访问子系统的类。 * 缺点: * 1. 过多的或者不太合理的Faade也容易让 * 人迷惑。到底是调用Faade好呢,还是 * 直接调用子系统的模块好呢。 * 使用场景: * 1. 当要为访问一系列复杂的子系统提供一 * 个简单入口时可以使用外观模式。 * 2. 客户端程序与多个子系统之间存在很大 * 的依赖性。引入外观类可以将子系统与 * 客户端解耦,从而提高子系统的独立性 * 和可移植性。 * 3. 在层次化结构中,可以使用外观模式定 * 义系统中每一层的入口,层与层之间不 * 直接产生联系,而通过外观类建立联系, * 降低层之间的耦合度。 * */ //具体的股票和房地产类 class Stock1{ public function Sell(){ echo '股票1卖出<br/>'; } public function buy(){ echo '股票1买入<br/>'; } } class Stock2{ public function sell(){ echo '股票2卖出<br/>'; } public function buy(){ echo '股票2买入<br/>'; } } class Realty1{ public function sell(){ echo '房地产卖出<br/>'; } public function buy(){ echo '房地产买入<br/>'; } } //基金类――外观类 class Fund{ public $stock1; public $stock2; public $realty1; public function __construct(){ $this->stock1=new Stock1(); $this->stock2=new Stock2(); $this->realty1=new Realty1(); } public function sell(){ $this->stock1->sell(); $this->stock2->sell(); $this->realty1->sell(); } public function buy(){ $this->stock1->buy(); $this->stock2->buy(); $this->realty1->buy(); } } //客户端 $fund=new Fund(); $fund->sell(); $fund->buy(); ?>
设计模式之结构型模式—— 2.5 外观模式
原创great_yonchin 博主文章分类:设计模式 ©著作权
©著作权归作者所有:来自51CTO博客作者great_yonchin的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
结构型模式(五):外观(门面)模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述门面(Facade)模式的:门面模式(外观模式)是对象的结构模式,外部与一个子
java 设计模式 编程语言 门面模式 客户端 -
23种设计模式----外观模式----结构型模式
外观模式1.什么是外观模式2.外观模式3.例子3.1项目结构:3.2 基本操作的抽象类3.3 具体操作的实现类3.4 外观类(封装类)3.5 调用者3.6
23种设计模式 外观模式 结构型模式 封装 简单化 -
【九】设计模式~~~结构型模式~~~外观模式(Java)
设计模式~~~结构型模式~~~外观模式(Java)
java 设计模式 外观模式 客户端 系统类 -
结构型模式
适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题。主要分为三类:类的
java System Source -
java设计模式--结构型模式--外观模式
1 外观模式 2 概述 3 为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 4 5 6 适用性 7 1.当你要为一个...
java常见设计模式 可移植性 依赖关系 重用性 抽象类