`

门面模式(外观模式)

阅读更多

1、外观模式

      为子系统的一组接口提供一个一致的界面,此模式为客户端或子系统提供一个高层接口,这个接口使得客户端或子系统更加方便使用。简单的说,外观模式里面的实现可能是比较复杂的,在里面的实现中可能会涉及调用多个接口或调用顺序。但向子系统或客户端提供接口却比较简单,客户端或子系统只需关注接口,而并不需要关心里面复杂的实现和调用顺序。
2、图



 
3、使用范围
(1)业务层和表面层的层与层之间建立外观模式,可提供一个简单的接口,减少他们之间的依赖。
(2)维护一溜的大型系统时,可能系统已经难以维护或扩展,减少它们之间的依赖,可为新系统开发提供一个外观类,让新系统与外观类对象交互,外观类与遗留代码进行复杂的交互工作。

4、举例实现

(1)定义接口与实现

package com.cvicse.facade;

public interface LetterProcess {
	// 首先要写信的内容
	public void writeContext(String context);

	// 其次写信封
	public void fillEnvelope(String address);

	// 把信放到信封里
	public void letterInotoEnvelope();

	// 然后邮递
	public void sendLetter();
}

 

package com.cvicse.facade;

public class LetterProcessImpl implements LetterProcess {
	// 写信
	public void writeContext(String context) {
		System.out.println("填写信的内容...." + context);
	}

	// 在信封上填写必要的信息
	public void fillEnvelope(String address) {
		System.out.println("填写收件人地址及姓名...." + address);
	}

	// 把信放到信封中,并封好
	public void letterInotoEnvelope() {
		System.out.println("把信放到信封中....");
	}

	// 塞到邮箱中,邮递
	public void sendLetter() {
		System.out.println("邮递信件...");
	}
}

 

2、定义门面接口

package com.cvicse.facade;

public class ModenPostOffice {
	private LetterProcess letterProcess = new LetterProcessImpl();

	// 写信,封装,投递,一体化了
	public void sendLetter(String context, String address) {
		// TODO Auto-generated method stub
		// 帮你写信
		letterProcess.writeContext(context);
		// 写好信封
		letterProcess.fillEnvelope(address);
		// 把信放到信封中
		letterProcess.letterInotoEnvelope();
		// 邮递信件
		letterProcess.sendLetter();
	}
}

 

3、子系统或客户端调用

package com.cvicse.facade;

public class Client {
	public static void main(String[] args) {
		// 现代化的邮局,有这项服务,邮局名称叫Hell Road
		ModenPostOffice hellRoadPostOffice = new ModenPostOffice();
		// 你只要把信的内容和收信人地址给他,他会帮你完成一系列的工作;
		String address = "Happy Road No. 666,God Province,Heaven"; // 定义一个地址
		String context = "Hello,It's me,do you know who I am? I'm your old lover.I'd like to....";
		hellRoadPostOffice.sendLetter(context, address);
	}
}

 

4、总结层与层之间的调用,门面模式常常和单利模式混合使用。这种模式在程序的开发中非常常见。

 

  • 大小: 50.6 KB
分享到:
评论

相关推荐

    java门面设计PPT

    java门面模式外观模式最大的缺点在于违背了“开闭原则”,当增加新的子系统或者移除子系统时需要修改外观类,可以通过引入抽象外观类在一定程度上解决该问题,客户端针对抽象外观类进行编程。对于新的业务需求,不...

    第14章_外观模式.ppt

    外观模式(Facade Pattern):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个...外观模式又称为门面模式,它是一种对象结构型模式。

    facade门面模式

    java设计模式门面模式java设计模式门面模式

    c++设计模式-结构型模式-外观模式

    c++设计模式-结构型模式-外观模式;qt工程;c++简单源码; 外观(Facade)模式又叫作门面模式,是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,...

    Java设计模式详解之门面模式(外观模式)

    为子系统中的一组接口提供一个一致的界面, Facade 模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。本文给大家介绍Java设计模式详解之门面模式(外观模式),感兴趣的朋友参考下吧

    JavaScript设计模式之外观模式实例

    外观模式(门面模式),是一种相对简单而又无处不在的模式。外观模式提供一个高层接口,这个接口使得客户端或子系统更加方便调用。 用一段再简单不过的代码来表示: 代码如下: var getName = function(){ return ”...

    解析C#设计模式编程中外观模式Facade Pattern的应用

    主要介绍了C#设计模式编程中外观模式Facade Pattern的应用,外观模式中分为门面(Facade)和子系统(subsystem)两个角色来进行实现,需要的朋友可以参考下

    C++设计模式原理与实战视频课

    C++设计模式原理与实战视频课 1-1 课程介绍 1-2 导论UML和设计模式导论 2-1 简单工厂方法的定义场景与实现-针对接口编程的设计思想剖析 ...3-2 门面(外观)模式Facade的定义、场景与实用工程技术:LOD

    .NET设计模式(12):外观模式(Fa?adePattern)

    [GOF《设计模式》]门面模式没有一个一般化的类图描述,下面是一个示意性的对象图:外观模式为子系统中的接口定义了一个统一的更高层次的界面,以便于使用。当消费者按照目录采购时,则体现了一个外观模式。消费者...

    php设计模式 Facade(外观模式)

    外观模式又称为门面模式,它是一种对象结构型模式。 模式结构: 外观模式的就是让client客户端以一种简单的方式来调用比较复杂的系统,来完成一件事情。 Subsystem: 复制代码 代码如下: class car { public ...

    23种设计模式的实现(Java 版),java设计模式

    Factory模式,Prototype模式,Builder 模式,Singleton模式,Facade模式,Proxy模式,Adapter模式,Composite模式,Decorator模式....

    Ajax中使用Facade外观模式的Eclipse版本的Demo

    Ajax中使用Facade外观(门面)模式的Eclipse版本的Demo.

    设计模式中的facade外观模式在JavaScript开发中的运用

    外观模式(门面模式),是一种相对简单而又无处不在的模式。外观模式提供一个高层接口,这个接口使得客户端或子系统更加方便调用。 外观模式并不是适配器模式,适配器模式是一种包装器,用来对接口进行适配以便在不...

    leetcode分类-DesignPatternAndAlgorithm:常用设计模式和算法,练习用

    结构型模式:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式 行为型模式:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式...

    gopattern:Go语言23种设计模式

    外观模式(门面) 适配器模式(Adapter) 代理模式(Proxy) 组合模式(复合) 享元模式(Flyweight) 装饰模式(装饰器) 桥模式(Bridge) 行为型模式 如何将多个类或对象相互协作,完成特定对象无法完成的任务,...

    二十三种设计模式【PDF版】

    设计模式之 Facade(门面?) 可扩展的使用 JDBC针对不同的数据库编程,Facade提供了一种灵活的实现. 设计模式之 Composite(组合) 就是将类用树形结构组合成一个单位.你向别人介绍你是某单位,你是单位中的一个元素...

    ios设计模式学习实例

    本应用实例中包含大部分的cocoa设计模式(已添加详细注释): 创建型:单例(单态)和抽象工厂 ...结构型:MVC、装饰器、适配器、外观(门面)、组合模式 行为型:观察者、备忘录、责任链、命令模式

    Python笔记之facade模式

    facade模式,即门面模式,也称外观模式,这个模式的核心思想是使用facade对象为外部客户端提供一个统一的访问一组子系统的接口,即客户端不会直接与各个子系统交互,而是通过facade对象与各个子系统进行通信并使用子...

    详解PHP中的外观模式facade pattern

    facade这个词,原意指的是一个建筑物的表面、外观,在建筑学中被翻译为“立面”这个术语,国内对facade这个词的关注,可能更多要依赖于laravel的流行,似乎都一致把laravel里的facade翻译作“门面”。说实在的,当第...

Global site tag (gtag.js) - Google Analytics