- 浏览: 115775 次
- 性别:
- 来自: 上海
最新评论
-
ty709928686:
...
导出db2数据库的表结构和数据 -
suifengJC614:
对于你的第一种解决方案,其实不用那么麻烦,如果对外观有要求的话 ...
jcomboBox显示长项目的内容
GOF《设计模式》一书对Facade模式是这样描述的:
为子系统中的一组接口提供一个统一接口。Facade模式定义了一个更高层的接口,使子系统更加容易使用。
大致意思是说:使用一种比原有方式更简单的办法与系统交互。例如,我们把一个很文件的文件,放在了第二抽屉里,而第二个抽屉的钥匙放在了第一个抽屉里,我们要想取出这个文件,第一步肯定要拿到第一个抽屉的钥匙,然后打开它再拿出第二个抽屉的钥匙,最后打开第二个抽屉取出文件。
我就上面说的那个情形写一下实现代码,首先我们要实现二个子系统,呵呵,把抽屉比喻成系统,有点夸张了(DrawerOne、DrawerTwo):
由于没有使用Façade模式,可以看到要想得到这个文件要首先打开第一个抽屉,然后再打开第二个抽屉,在我们实际所开发的系统中,有时候客户要实现某一操作,并不需要知道实现这一操作的详细步骤,而是简单地点击某一个按钮就可以得到自己想要的结果。下面对上面的代码使用Façade模式进行改进,建立一个FacadeDrawer类:
修改Client类:
输出结果如下:
第一个抽屉被打开了
得到第二个抽屉的钥匙
第二个抽屉被打开了
得到这个重要文件
正如上面所说,客户端client,它并不需要关心子系统,而是关心DrawerFacade所留下来的和外部交互的接口,而子系统在DrawerFacade的聚合。
以上只是个人拙见,哪里有不正确的地方,希望大家多多批评指正。^_^
Facade模式主要适用于以下几种情况:
1) 不需要使用一个复杂系统的所有功能,而且可以创建一个新的类,包含访问系统的所有规则。如果只需要使用系统的部分功能,那么你为新类所创建的API将比原系统的API简单的多。
2) 希望封装或者隐藏系统原系统。
3) 希望使用原系统的功能,而且还希望增加一些新的功能。
4) 编写新类的成本小于所有人学会使用或者未来维护原系统上所需的成本。
为子系统中的一组接口提供一个统一接口。Facade模式定义了一个更高层的接口,使子系统更加容易使用。
大致意思是说:使用一种比原有方式更简单的办法与系统交互。例如,我们把一个很文件的文件,放在了第二抽屉里,而第二个抽屉的钥匙放在了第一个抽屉里,我们要想取出这个文件,第一步肯定要拿到第一个抽屉的钥匙,然后打开它再拿出第二个抽屉的钥匙,最后打开第二个抽屉取出文件。
我就上面说的那个情形写一下实现代码,首先我们要实现二个子系统,呵呵,把抽屉比喻成系统,有点夸张了(DrawerOne、DrawerTwo):
public class DrawerOne { public void open() { System.out.println("第一个抽屉被打开了"); getKey(); } public void getKey() { System.out.println("得到第二个抽屉的钥匙"); } }
public class DrawerTwo { public void open() { System.out.println("第二个抽屉被打开了"); getFile(); } public void getFile() { System.out.println("得到这个重要文件"); } }
public class Client{ public static void main(String []args){ DrawerOne darwerOne=new DrawerOne(); DrawerTwo darwerTwo=new DrawerTwo(); darwerOne.open(); darwerTwo.open(); } }
由于没有使用Façade模式,可以看到要想得到这个文件要首先打开第一个抽屉,然后再打开第二个抽屉,在我们实际所开发的系统中,有时候客户要实现某一操作,并不需要知道实现这一操作的详细步骤,而是简单地点击某一个按钮就可以得到自己想要的结果。下面对上面的代码使用Façade模式进行改进,建立一个FacadeDrawer类:
public class DrawerFacade { DrawerOne darwerOne; DrawerTwo darwerTwo; public DrawerFacade() { darwerOne = new DrawerOne(); darwerTwo = new DrawerTwo(); } public void open() { darwerOne.open(); darwerTwo.open(); } }
修改Client类:
public class Client{ public static void main(String []args){ DrawerFacade drawer = new DrawerFacade(); drawer.open(); } }
输出结果如下:
第一个抽屉被打开了
得到第二个抽屉的钥匙
第二个抽屉被打开了
得到这个重要文件
正如上面所说,客户端client,它并不需要关心子系统,而是关心DrawerFacade所留下来的和外部交互的接口,而子系统在DrawerFacade的聚合。
以上只是个人拙见,哪里有不正确的地方,希望大家多多批评指正。^_^
Facade模式主要适用于以下几种情况:
1) 不需要使用一个复杂系统的所有功能,而且可以创建一个新的类,包含访问系统的所有规则。如果只需要使用系统的部分功能,那么你为新类所创建的API将比原系统的API简单的多。
2) 希望封装或者隐藏系统原系统。
3) 希望使用原系统的功能,而且还希望增加一些新的功能。
4) 编写新类的成本小于所有人学会使用或者未来维护原系统上所需的成本。
- facade.rar (959 Bytes)
- 下载次数: 0
发表评论
文章已被作者锁定,不允许评论。
-
Velocity读取模板文件的方法[转]
2012-10-30 11:04 1707我用的是velocity-1.6.4,官方自带的Example ... -
jdbc-odbc连接dbf (转)
2011-12-21 12:06 4879dbf分两种,一种是Dbase,另一种是Foxpro的 1、 ... -
jar文件数字签名
2010-10-09 11:45 6415给JAR文件数字签名 1、用keytool生成密钥: k ... -
JAVA国际化配置
2010-09-13 11:03 1220国际化(Internationalization,又称il ... -
dom XML操作
2010-09-10 17:56 892一、创建XML文件 public static vo ... -
轻松部署Java Web Start
2010-07-24 23:19 1338Java Web Start(以下简称JWS)是SUN提供 ... -
调整bufferedimage大小
2010-03-09 19:58 2631/** * 调整bufferedim ... -
jcomboBox显示长项目的内容
2010-03-04 11:19 4420如果JComboBox列表中的内容过长的话,下拉框中不全部显示 ... -
JFreeChart中文使用文档
2010-03-01 16:41 1285JFreeChart类: void setAntiAlias ... -
java crash详细分析
2010-01-30 17:02 2892一. 如何得到这个日志 ... -
JComboBox实现下拉框向上显示
2009-10-24 21:42 5600JComboBox 向上弹出 写一个东西用到了 JComboB ... -
生成验证图片
2009-10-22 21:08 861private void createImage( ... -
发送邮件
2009-10-22 17:08 1030//发送邮件方法 public stat ... -
树节点状态的保存和加载
2009-10-22 10:46 1240保存树节点状态至数据库表中 this.addWindow ... -
jtable添加行标题
2009-10-15 16:11 5159将表格的第一列作为表头,使用渲染器改变其外观,看起来像表头 ... -
修改树节点
2009-10-14 17:40 1322修改jtree树节点时,需要先注册树节点的编辑事件,然后在编辑 ... -
拖拽表数据实现数据的传输
2009-10-14 17:33 1017将表中一条记录拖拽至树中节点时需在表中监听TransferHa ... -
使用序列化实现对象深拷贝
2009-10-14 17:28 1727实现树节点的深拷贝 public DefaultM ... -
JTable 实用方法
2009-09-03 23:11 13601. 设置指定行的颜色 class TableCo ... -
Double精度的常用设置
2009-08-31 23:54 9057import java.text.DecimalFormat; ...
相关推荐
外观模式(Facade Pattern)是设计模式中的一种结构型模式,主要目的是为了解决复杂的系统接口问题,提供一个简单的统一入口,使得客户端可以更方便地使用系统。在Java中,外观模式通常用来隐藏系统的复杂性,对外只...
**外观模式(Facade Pattern)**是一种结构型设计模式,它主要解决的是复杂系统或子系统对外暴露一个简单统一的接口,使得客户端无需关心内部复杂的交互细节。这种模式在实际开发中广泛应用,尤其在大型项目中,它能...
学习设计模式能带来诸多好处,如复用成熟的解决方案,提高团队沟通效率,提升设计质量,增强代码的可维护性。同时,设计模式也是一种通用的术语,使得开发者能用共同的语言讨论和分析设计问题。 在实际应用中,...
外观模式是一种结构型设计模式,它的主要目标是提供一个统一的接口,用来简化对复杂系统的访问。在Java中,当你有一个复杂的子系统,而你希望客户端代码能够以一种更简洁、更易于理解的方式来与之交互时,就可以使用...
**外观模式(Facade Pattern)**是面向对象设计模式中的一种结构型模式,它提供了一个统一的接口,用于访问子系统中的各个部分。在C#编程中,外观模式可以帮助我们简化复杂的系统接口,使得客户端代码与复杂的内部...
外观模式(Facade Pattern)是一种结构型设计模式,用于为复杂子系统提供一个简单的接口。它通过封装系统内部的复杂性,提供一个统一的接口,使得客户端能够更加方便地使用子系统的功能。这种模式通常用于简化代码、...
在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的其他资源均不需要... 这是第11节:结构型模式Facade外观模式
外观模式(Facade Pattern)在软件工程中是一种设计模式,它为复杂的系统或子系统提供一个简单的接口,使得客户端可以更容易地使用这些系统或子系统。外观模式的核心思想是通过一个高层次的接口,隐藏子系统的复杂性...
Facade(外观)设计模式是一种结构型设计模式,它的主要目的是为复杂的系统提供一个统一的、简单的接口,使得客户端可以避免与系统的内部复杂性进行交互。Facade模式将子系统的多个组件组合在一起,提供了一个高层次...
本篇文章将深入探讨C#面向对象设计模式中的Facade外观模式,这是一种结构型模式,旨在通过提供一个统一的接口来简化复杂的子系统。文章通过具体的例子和代码展示了如何在实际开发中运用这一模式,并解释了它与其他几...
设计模式之Facade(外观) 设计模式之Proxy(代理) 设计模式之Adapter(适配器) 设计模式之Composite(组合) 设计模式之Decorator(油漆工) 设计模式之Bridge 设计模式之Flyweight(享元) 行为模式: 设计模式之Template ...
章节介绍:1、爪哇语言结构性模式之变压器模式介绍 2、爪哇语言抽象工厂创立性模式介绍 3、工厂方法创立...10、设计模式之State 11、设计模式之Facade(外观) 12、设计模式之Interpreter(解释器) 13、设计模式之Visitor
C#面向对象设计模式纵横谈\C#面向对象设计模式纵横谈\10.Facade 外观模式(结构型模式).wmv )
**外观模式(Facade Pattern)**是一种结构型设计模式,它为复杂的系统或子系统提供一个简单的接口,使得客户端可以不关心内部的复杂性,只通过这个接口与子系统进行交互。这种模式降低了系统的复杂度,提高了代码的...
**外观(Facade)设计模式**是一种结构型设计模式,它为复杂的系统或子系统提供一个统一、简洁的接口,使得客户端可以更容易地与其交互。在软件工程中,当一个系统包含多个子系统或者组件,而这些子系统之间相互依赖...
设计模式之Facade(外观) 设计模式之Proxy(代理) 设计模式之Adapter(适配器) 设计模式之Composite(组合) 设计模式之Decorator(油漆工) 设计模式之Bridge 设计模式之Flyweight(享元) 行为模式: 设计模式之Template ...
在软件设计模式的世界里,`Command`(命令)和`Facade`(外观)模式是非常重要的两种设计模式。它们分别服务于不同的目的,但都是为了提高代码的可读性、可维护性和灵活性。 `Command`模式是一种行为设计模式,它将...
设计模式面面观(13):外观模式(Facade Pattern)-结构型模式 http://blog.csdn.net/fanweiwei/archive/2008/04/17/2299641.aspx
外观模式(Facade Pattern)是设计模式中的一种结构型模式,它的主要目的是为了解耦系统,提供一个统一的入口,使得客户端可以更容易地使用复杂的子系统。在Java中,外观模式通常用于简化对复杂系统的访问,它创建了...