- 浏览: 1547838 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (525)
- SEO (16)
- JAVA-EE-Hibernate (6)
- JAVA-EE-Struts (29)
- JAVA-EE-Spring (15)
- Linux (37)
- JAVA-SE (29)
- NetWork (1)
- CMS (14)
- Semantic Research (3)
- RIA-Flex (0)
- Ajax-Extjs (4)
- Ajax-Jquery (1)
- www.godaddy.com (0)
- SSH (34)
- JavaScript (6)
- SoftwareEngineer (9)
- CMMI (0)
- IDE-Myeclipse (3)
- PHP (1)
- Algorithm (3)
- C/C++ (18)
- Concept&Items (2)
- Useful WebSite (1)
- ApacheServer (2)
- CodeReading (1)
- Socket (2)
- UML (10)
- PowerDesigner (1)
- Repository (19)
- MySQL (3)
- SqlServer (0)
- Society (1)
- Tomcat (7)
- WebService (5)
- JBoss (1)
- FCKeditor (1)
- PS/DW/CD/FW (0)
- DesignPattern (11)
- WebSite_Security (1)
- WordPress (5)
- WebConstruction (3)
- XML|XSD (7)
- Android (0)
- Project-In-Action (9)
- DatabaseDesign (3)
- taglib (7)
- DIV+CSS (10)
- Silverlight (52)
- JSON (7)
- VC++ (8)
- C# (8)
- LINQ (1)
- WCF&SOA (5)
- .NET (20)
- SOA (1)
- Mashup (2)
- RegEx (6)
- Psychology (5)
- Stock (1)
- Google (2)
- Interview (4)
- HTML5 (1)
- Marketing (4)
- Vaadin (2)
- Agile (2)
- Apache-common (6)
- ANTLR (0)
- REST (1)
- HtmlAnalysis (18)
- csv-export (3)
- Nucth (3)
- Xpath (1)
- Velocity (6)
- ASP.NET (9)
- Product (2)
- CSS (1)
最新评论
-
lt26w:
理解成门面模式应该比较容易明白吧
FacadePattern-Java代码实例讲解 -
lt26w:
看下面的例子比较明白.
FacadePattern-Java代码实例讲解 -
javaloverkehui:
这也叫文档,别逗我行吗,也就自己看看。
HtmlCleaner API -
SE_XiaoFeng:
至少也应该写个注释吧。
HtmlCleaner API -
jfzshandong:
...
org.springframework.web.filter.CharacterEncodingFilter 配置
Facade Pattern 外观模式
提供一个统一的接口去访问多个子系统的多个不同的接口。外观模式定义了一个高层次的接口。
Facade外形类 知道哪写子系统负责处理哪些请求 将客户请求传递给相应的子系统处理 Subsystem 子系统类 实现子系统功能 处理由Facade传来的任务 子系统补用知道Facade,在任何地方页没有引用Facade demo 额 我觉得这个例子不好。。这个不是简单的封装么?= =到底简单的封装和facadepattern 什么区别 T_T public class Client {//这个就是所谓的客户端啦~~他要调用interface public static void main(String[] args){ FacadeCuppaMaker cuppaMaker = new FacadeCuppaMaker(); TeaCup teaCup = cuppaMaker.makeACuppa(); System.out.println(teaCup); } } public class FacadeCuppaMaker {//这是个复杂的子系统的对外接口 = = boolean teaBagIsSteeped; public FacadeCuppaMaker(){ System.out.println("FacadeCuppaMaker准备好为您冲茶了!"); } public TeaCup makeACuppa(){ TeaCup cup = new TeaCup(); TeaBag teaBag = new TeaBag(); Water water = new Water(); cup.addFacadeTeaBag(teaBag); water.boilFacadeWater(); cup.addFacadeWater(water); cup.steepTeaBag(); return cup; } } public class Water { boolean waterIsBoiling; public Water(){ setWaterIsBoiling(false); System.out.println("纯净的水准备好了"); } public void boilFacadeWater(){ setWaterIsBoiling(true); System.out.println("水在沸腾"); } public void setWaterIsBoiling(boolean isWaterBoiling){ waterIsBoiling = isWaterBoiling; } public boolean getWaterIsBoiling(){ return waterIsBoiling; } } public class TeaBag { public TeaBag(){ System.out.println("清香的茶包准备好了"); } } public class TeaCup { boolean teaBagIsSteeped; Water facadeWater; TeaBag facadeTeaBag; public TeaCup(){ setTeaBagIsSteeped(false); System.out.println("茶杯准备好了"); } public void setTeaBagIsSteeped(boolean isTeaBagSteeped){ teaBagIsSteeped = isTeaBagSteeped; } public boolean getTeaBagIsSteeped(){ return teaBagIsSteeped; } public void addFacadeTeaBag(TeaBag facadeTeaBagIn){ facadeTeaBag = facadeTeaBagIn; System.out.println("茶包放在茶杯了"); } public void addFacadeWater(Water facadeWaterIn){ facadeWater = facadeWaterIn; System.out.println("水倒入杯子了"); } public void steepTeaBag(){ if((facadeTeaBag!=null) && (facadeWater!=null) && (facadeWater.getWaterIsBoiling())){ System.out.println("茶渗透到杯子中"); setTeaBagIsSteeped(true); } else{ System.out.println("茶没有渗透到杯子中"); setTeaBagIsSteeped(false); } } public String toString(){ if(this.getTeaBagIsSteeped()){ return "一杯又香又浓的茶冲好了!"; } else{ String tempString = new String("一个杯子"); if(facadeWater != null){ if(facadeWater.getWaterIsBoiling()){ tempString += "放有沸腾的水 "; } else{ tempString += "放有凉水 "; } } else{ tempString += "没有放水 "; } if(facadeTeaBag != null){ tempString += "有一个茶包"; } else{ tempString += "没有茶包"; } return tempString; } } } |
===================================================
Facade Pattern
我找到的另外一个例子:
/* * Facade Pattern(外观模式) *将一组复杂的行为封装起来,通过简单接口来实现统一调用。 *例子:在家里看电影,可能需要一系列步骤:打开dvd,放盘,打开tv,打开音响,调好音调,关灯等诸如此类动作 *如果需要每一个都在客户代码来控制,将来修改或者维护比较麻烦,但是如果将这些统一通过facade模式封装到一个 *watchMovie接口中,客户知道我只需按watchMovie就会形成一系列动作,具体干什么可以不清楚。另外对于被封装的类 *具体使用并没受到影响,依然可以自己打开tv,打开hifi等。 * *在Head First中提到一个 *Least Knowledge Principle:talk only to your immediate friends; *这个原则是说:向直接的类保持联系,不必要的可以封装起来,通过一个封装类统一打交道; *其中head First指出几个guidelines * *only invoke methods that belong to: *1)The object itself; //方法属于本身 *2)objects passed in as a parameter to the method //方法是属于参数传入的对象 类似setParam(ClassA ca) ca.methods() *3)any object the method creates or instantiates //方法属于内部创建的实例。 *4)any components of the object //对象的组成成分 * * */ class TV{ public void on(){ System.out.println("TV On"); } public void off(){ System.out.println("TV Off"); } } class DvDplayer{ private String str; public void on(){ System.out.println("DvD On"); } public void off(){ System.out.println("DvD Off"); } public void setDvD(String DvDstr){ str = DvDstr; System.out.println("DvD setDvD " + str); } public void popDvD(){ System.out.println("DvD popDvD "+str); str = ""; } } class HiFi{ private int v; public void turnUp(){ v += 10; System.out.println("HiFi turnUp to "+10); } public void turnDown(){ v -= 10; System.out.println("HiFi turnDown to " + 10); } public void On(){ System.out.println("HiFi On"); } public void Off(){ System.out.println("HiFi Off"); } } class myFacade{ private HiFi hifi; private DvDplayer dvd; private TV tv; public myFacade(HiFi h,DvDplayer d,TV t){ hifi = h; dvd = d; tv = t; } public void watchMovie(String strDvD){ tv.on(); //一系列行为调用 hifi.On(); hifi.turnUp(); dvd.on(); dvd.setDvD(strDvD); } public void stopWatchMovie(){ hifi.Off(); dvd.popDvD(); dvd.off(); tv.off(); } } public class FacadeTest { /** * @param args */ public static void main(String[] args) { HiFi h = new HiFi(); TV t = new TV(); DvDplayer dvd = new DvDplayer(); myFacade mf = new myFacade(h,dvd,t); mf.watchMovie("War II"); //关心看电影,不关心电影通过怎样操作才可以看到 mf.stopWatchMovie(); } }
有些关于Decorator Pattern ,Facade Pattern,Adapter Pattern比较:
从它们的目的来比较:
Decorator Pattern:动态添加一些额外功能;
Facade Pattern:封装功能,使一系列复杂动作通过简单接口公开;
Adapter Pattern:转换接口功能,从一个接口转换到另一种接口形式;
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/binghuazh/archive/2009/02/06/3866465.aspx
发表评论
-
在DAO设计模式中使用工厂设计
2009-12-07 10:00 1273工厂设计: 使用工厂设计,使前台不用知道具体子类是谁 ... -
UML、Design Pattern、OOD、OOP關係圖 (OO) (Design Pattern) (UML)
2009-12-06 17:55 1670http://moncs.cs.mcgill.ca/pe ... -
學習Design Pattern的小技巧 (OO) (Design Pattern)
2009-12-06 17:53 1556Abstract很多人學習Design Pattern,總是被 ... -
桥梁(Bridge)模式
2009-12-06 17:49 1086设计模式(16)-Bridge Pattern ... -
设计模式(22)-Strategy Pattern
2009-12-06 17:01 1071设计模式(22)-Strategy Pattern ... -
Facade Pattern
2009-12-06 17:00 1035一、 门面(Facade) ... -
facade pattern
2009-12-06 16:57 1151facade是我學到的第三個pattern,也是個很簡單的pa ... -
Proxy Pattern
2009-12-06 14:41 1168代理模式:给某一对象提供代理对象,并由代理对象控制具体对象的引 ... -
门面模式概要
2009-12-05 11:01 1296一、门面模式定义 ... -
FacadePattern
2009-12-05 10:40 924在过去几年中 ...
相关推荐
- 外观模式(Facade Pattern):这是将一组复杂操作封装在单个接口后的简化设计模式,旨在降低系统内部组件间的依赖关系。 - 单例模式(Singleton Pattern):保证一个类只有一个实例,并提供一个全局访问点。在Java...
7. 门面模式(Facade Pattern):为子系统中的一组接口提供一个统一的高层接口,使子系统更容易使用。 8. 适配器模式(Adapter Pattern):将一个类的接口转换成客户希望的另外一个接口。适配器让原本接口不兼容的...
根据提供的文件信息,“java与模式.pdf”是一本深入讲解设计原则和常见设计模式的专业书籍,主要面向Java程序员、架构设计师及设计模式爱好者。本书通过55个章节详细介绍了各种编程模式,每个章节均包含了该模式的...
7. **门面模式(Facade Pattern)** - 介绍:为子系统中的一组接口提供一个统一的接口。 8. **适配器模式(Adapter Pattern)** - 介绍:将一个类的接口转换成客户期望的另一个接口。 9. **模板方法模式...
Java高级教程中的第六章主要讲解了五个常用的设计模式:单态模式、MVC模式、简单工厂模式、门面模式和适配器模式。设计模式是软件工程中经过实践验证的解决常见问题的有效策略,旨在提高代码的可复用性和可维护性。 ...
综合实例——Bug管理系统 (3)设计模式样例(24个讲解样例程序) pattern/src/principle/liskovsubstitution//10.3.2里氏代换原则 pattern/src/creation/factorymethod //11.1工厂方法模式 pattern/src/creation/...
pattern/src/structure/facade //12.4外观模式 pattern/src/structure/bridge //12.5桥接模式 pattern/src/structure/composite //12.6组合模式 pattern/src/structure/flyweight //12.7享元模式 pattern/src/...
综合实例——Bug管理系统 (3)设计模式样例(24个讲解样例程序) pattern/src/principle/liskovsubstitution//10.3.2里氏代换原则 pattern/src/creation/factorymethod //11.1工厂方法模式 pattern/src/creation/...
综合实例——Bug管理系统 (3)设计模式样例(24个讲解样例程序) pattern/src/principle/liskovsubstitution//10.3.2里氏代换原则 pattern/src/creation/factorymethod //11.1工厂方法模式 pattern/src/creation/...
pattern/src/structure/facade //12.4外观模式 pattern/src/structure/bridge //12.5桥接模式 pattern/src/structure/composite //12.6组合模式 pattern/src/structure/flyweight //12.7享元模式 pattern/src/...
5. 门面模式(FACADEPATTERN):门面模式提供了一个统一的接口,用来访问子系统中的一群接口。门面定义了一个高层接口,让子系统更容易使用。 6. 适配器模式(ADAPTERPATTERN):适配器模式将一个类的接口转换成...
《Java设计模式之禅》是一本深入浅出讲解设计模式的书籍,书中不仅包含23种经典设计模式的案例,还详细介绍了设计模式背后的思想和原则,适合初学者以及对设计模式有一定了解的程序员阅读。本书旨在帮助读者理解如何...
4. 外观模式(Facade Pattern): 外观模式提供了一个统一的接口,用来访问子系统中的多个接口,使得子系统更容易使用。它隐藏了子系统的复杂性,为客户端提供了一个简单的接口来与子系统交互。外观模式降低了系统的...
##### 第7章 门面模式【Facade Pattern】 **定义**:为子系统中的一组接口提供一个一致的界面。 **应用场景**:当一个系统过于复杂,外部系统需要一个简单的接口与之交互时,可以使用门面模式。 **示例**:可以...
Java设计模式是面向对象编程中的一个核心概念,它是一套被广泛接受并实践的解决软件设计...对于压缩包文件“JavaDesignPattern”,可能是包含了一些示例代码或者更深入的讲解,读者可以通过解压文件获取更多详细信息。
综合实例——Bug管理系统 (3)设计模式样例(24个讲解样例程序) pattern/src/principle/liskovsubstitution//10.3.2里氏代换原则 pattern/src/creation/factorymethod //11.1工厂方法模式 pattern/src/creation/...
综合实例——Bug管理系统 (3)设计模式样例(24个讲解样例程序) pattern/src/principle/liskovsubstitution//10.3.2里氏代换原则 pattern/src/creation/factorymethod //11.1工厂方法模式 pattern/src/creation/...
pattern/src/structure/facade //12.4外观模式 pattern/src/structure/bridge //12.5桥接模式 pattern/src/structure/composite //12.6组合模式 pattern/src/structure/flyweight //12.7享元模式 pattern/src/...