ITKeyword,专注技术干货聚合推荐

注册 | 登录

设计模式10_门面模式

相关推荐:Java经典设计模式之七大结构型模式(附实例和详解)

博主在大三的时候有上过设计模式这一门课,但是当时很多都基本没有听懂,重点是也没有细听,因为觉得没什么卵用,硬是要搞那么复杂干嘛。因此设计模式建议工作半

本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/52050069 1、定义

门面模式是对象的结构模式,它提供一个高层次的接口,使得子系统更易于使用。2、说明

对于web系统或app而言,其中包含各种不同的业务方法,以提供不同的服务,而不同业务之间可能会彼此进行调用。这样,可能会在一个业务方法中注入多个其它的业务方法,一旦新增的业务与之相关就会对其注入新的业务方法,显然,各种业务方法耦合在一起了。

针对上述情况,如果使用门面模式,将所有的业务方法都注入到门面类中,而某一个业务方法要使用其它业务方法,只需要注入门面类即可。这样就将各种不同的业务方法独立开来,互不耦合。

通常情况下,门面模式的使用场景大致有:(1)为复杂的模块、子系统提供外界访问的模块。(2)子系统相对独立。(3)在层次化结构中,可以使用外观模式定义系统中每一层的入口。3、角色

子系统角色:实现各个子系统的功能它没。门面角色和客户角色对其是透明的,它没有任何的信息和链接。

门面角色:门面模式的核心。它被客户角色调用,其熟悉子系统的功能,且其内部根据客户角色的各种需求提供了不同的方法。

客户角色:调用门面角色来实现所需的功能。4、类图5、示例

子模块01:起床package headfirst.design.facade;public class SubjectA {

public void getUp() {

System.err.println("起床。。。");

}}

子模块02:洗漱package headfirst.design.facade;public class SubjectB {

public void washing() {

System.err.println("洗漱。。。");

}}

子模块03:吃饭package headfirst.design.facade;public class SubjectC {

public void eating() {

System.err.println("吃饭。。。");

}}

子模块04:上班package headfirst.design.facade;public class SubjectD {

public void working() {

System.err.println("上班。。。");

}}

门面类:package headfirst.design.facade;public class Facade {

public void test(){

testA();

testB();

testC();

testD();

}

public void testA() {

SubjectA subjectA = new SubjectA();

subjectA.getUp();

}

public void testB() {

SubjectB su

相关推荐:java/android 设计模式学习笔记(3)---工厂方法模式

这篇来介绍一下工厂方法模式(Factory Method Pattern),在实际开发过程中我们都习惯于直接使用 new 关键字用来创建一个对象,可是有时候对象的创造需要一

bjectB = new SubjectB();

subjectB.washing();

}

public void testC() {

SubjectC subjectC = new SubjectC();

subjectC.eating();

}

public void testD() {

SubjectD subjectD = new SubjectD();

subjectD.working();

}}

测试:package headfirst.design.facade;public class Main {

public static void main(String[] args) {

Facade facade = new Facade();

//facade.test();

facade.testA();

facade.testB();

facade.testC();

facade.testD();

}}

运行结果:起床。。。洗漱。。。吃饭。。。上班。。。6、总结

门面模式将一些复杂的操作封装起来,以一个简单的接口提供给客户端。其可以定义多个子系统,但是层次之间的粗细粒度需要把握好。

优点:(1)松散耦合。门面模式松散了客户端与子系统的耦合关系,让子系统内部的模块能更容易扩展和维护。(2)简单易用。门面模式让子系统更加易用,客户端不再需要了解子系统内部的实现,也不需要跟众多子系统内部的模块进行交互,只需要跟门面类交互就可以了。(3)更好的划分访问层次。通过合理使用Facade,可以帮助我们更好地划分访问的层次。有些方法是对系统外的,有些方法是系统内部使用的。把需要暴露给外部的功能集中到门面中,这样既方便客户端使用,也很好地隐藏了内部的细节。

缺点:不符合开闭原则。即对扩展开放,对修改关闭。当系统可以提供新的功能模块时,需要进行相应修改。

本文只是简单介绍了门面模式,并未对其进行深入探讨,略显粗糙。希望本文对你有所帮助。

$(function () {

$('pre.prettyprint code').each(function () {

var lines = $(this).text().split('\n').length;

var $numbering = $('<ul/>').addClass('pre-numbering').hide();

$(this).addClass('has-numbering').parent().append($numbering);

for (i = 1; i <= lines; i++) {

$numbering.append($('<li/>').text(i));

};

$numbering.fadeIn(1700);

});

});

相关推荐:设计模式之觞

最近,读《编程人生》采访Jamie谈到有关对“设计模式”的看法,Jamie回答:“有本书叫《设计模式》,人人追捧,奉为圭臬。许多人都对这书着了魔,参加各种会议

? ? ? ? ? 本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/52050069 1、定义? ? ? ? ? 门面模式是对象的结构模式,它提供一个高层次的接口...

相关阅读排行


用户评论

游客

相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。