- 浏览: 203599 次
- 性别:
- 来自: 芜湖
文章分类
- 全部博客 (139)
- 软件 (0)
- Pattern (6)
- CSDN导入 (19)
- Struts (3)
- [网站分类]1.网站首页原创 (27)
- [网站分类]6.转载区 (4)
- Hibernate (10)
- Error (8)
- [网站分类]2.Java新手区 (20)
- Java (8)
- [网站分类]4.其他技术区 (10)
- Web (1)
- C++ (2)
- Algorithm (4)
- Linux (2)
- Skill (1)
- Tech (2)
- Note (2)
- [网站分类]3.非技术区 (1)
- Database (1)
- Winty (7)
- [网站分类]1.网站首页原创Java技术区(对首页文章的要求: 原创、高质量、经过认真思考并精心写作。BlogJava管理团队会对首页的文章进行管理。) (0)
最新评论
-
haohao-xuexi02:
很不错哦。
O'Reilly cos上传组件的使用(1/3) - 上传文件 -
yoin528:
useUnicode=true&charact ...
[原]向MySQL数据库插入Blob数据的问题 -
xiaoqing20:
下载来看看!呵呵
[原]Struts2类型转换 -
xiaoqing20:
[原]Struts2类型转换
[关键字]:java,design pattern,设计模式,《Java与模式》学习,门面模式,外观模式,Facade Pattern
[环境]:StarUML5.0 + JDK6
[作者]:Winty (wintys@gmail.com) http://www.blogjava.net/wintys/
[正文]:
无门面模式时:
有门面模式时:
package pattern.facade;
/**
* 门面模式/外观模式:Facade Pattern
*
* 保安系统:
* 一个保安系统由两个录像机、一个感应器和一个报警器组成。
* 由保安操作仪器的启动和关闭:没有使用门面模式时,保安必须亲自启动每个仪器。
* @version 2009-6-15
* @author Winty(wintys@gmail.com)
*/
public class FacadeTest{
public static void main(String[] args){
//无门面模式
Camera camera1,camera2;
camera1 = new Camera();
camera2 = new Camera();
Sensor sensor;
sensor = new Sensor();
Alarm alarm;
alarm = new Alarm();
//启动仪器
camera1.turnOn();
camera2.turnOn();
sensor.activate();
alarm.activate();
System.out.println("");
/////////////////////////////////
//使用门面模式
SecurityFacade security = new SecurityFacade();
security.start();
}
}
/**
* 门面:Facade
*/
class SecurityFacade{
private Camera camera1;
private Camera camera2;
private Sensor sensor;
private Alarm alarm;
public SecurityFacade(){
camera1 = new Camera();
camera2 = new Camera();
sensor = new Sensor();
alarm = new Alarm();
}
//启动
public void start(){
camera1.turnOn();
camera2.turnOn();
sensor.activate();
alarm.activate();
}
//停止
public void stop(){
camera1.turnOff();
camera2.turnOff();
sensor.deactivate();
alarm.deactivate();
}
}
class Camera{
public void turnOn(){
System.out.println("turn on the Camera.");
}
public void turnOff(){
System.out.println("turn off the Camera.");
}
//转动
public void rotate(){
System.out.println("rotate the Camera.");
}
}
class Sensor{
public void activate(){
System.out.println("activate the sensor.");
}
public void deactivate(){
System.out.println("deactivate the sensor.");
}
//触发感应器
public void trigger(){
System.out.println("trigger the sensor.");
}
}
class Alarm{
public void activate(){
System.out.println("activate the alarm.");
}
public void deactivate(){
System.out.println("deactivate the alarm.");
}
//拉响报警器
public void ring(){
System.out.println("ring the alarm.");
}
}
/**
* 门面模式/外观模式:Facade Pattern
*
* 保安系统:
* 一个保安系统由两个录像机、一个感应器和一个报警器组成。
* 由保安操作仪器的启动和关闭:没有使用门面模式时,保安必须亲自启动每个仪器。
* @version 2009-6-15
* @author Winty(wintys@gmail.com)
*/
public class FacadeTest{
public static void main(String[] args){
//无门面模式
Camera camera1,camera2;
camera1 = new Camera();
camera2 = new Camera();
Sensor sensor;
sensor = new Sensor();
Alarm alarm;
alarm = new Alarm();
//启动仪器
camera1.turnOn();
camera2.turnOn();
sensor.activate();
alarm.activate();
System.out.println("");
/////////////////////////////////
//使用门面模式
SecurityFacade security = new SecurityFacade();
security.start();
}
}
/**
* 门面:Facade
*/
class SecurityFacade{
private Camera camera1;
private Camera camera2;
private Sensor sensor;
private Alarm alarm;
public SecurityFacade(){
camera1 = new Camera();
camera2 = new Camera();
sensor = new Sensor();
alarm = new Alarm();
}
//启动
public void start(){
camera1.turnOn();
camera2.turnOn();
sensor.activate();
alarm.activate();
}
//停止
public void stop(){
camera1.turnOff();
camera2.turnOff();
sensor.deactivate();
alarm.deactivate();
}
}
class Camera{
public void turnOn(){
System.out.println("turn on the Camera.");
}
public void turnOff(){
System.out.println("turn off the Camera.");
}
//转动
public void rotate(){
System.out.println("rotate the Camera.");
}
}
class Sensor{
public void activate(){
System.out.println("activate the sensor.");
}
public void deactivate(){
System.out.println("deactivate the sensor.");
}
//触发感应器
public void trigger(){
System.out.println("trigger the sensor.");
}
}
class Alarm{
public void activate(){
System.out.println("activate the alarm.");
}
public void deactivate(){
System.out.println("deactivate the alarm.");
}
//拉响报警器
public void ring(){
System.out.println("ring the alarm.");
}
}
运行结果:
turn on the Camera.
turn on the Camera.
activate the sensor.
activate the alarm.
turn on the Camera.
turn on the Camera.
activate the sensor.
activate the alarm.
发表评论
-
[原]导出CodeHelp的数据
2009-03-16 17:05 859搬到blogjava总得发点原创的东西吧。 Code ... -
[原]使用Ant实现zip压缩解压功能
2009-03-19 13:17 1722[关键词]:ant,zip,unzip,Apache,压缩,解 ... -
[原]EL函数的使用
2009-04-03 21:29 1120[标题]:EL函数的使用 [时 ... -
[原]对Class.getMethod()的调用未经检查
2009-04-05 15:52 2365[标题]:对Class.getMethod()的调用未经检查 ... -
[原]JNI简单示例
2009-04-05 21:33 1039[标题]:JNI简单示例 [时 ... -
[原]简单工厂模式
2009-04-14 12:26 755[关键字]:java,设计模式,简单工厂,《java与模式》 ... -
[原]工厂模式
2009-04-14 12:32 734[关键字]:java,design pattern,设计模式, ... -
[原]抽象工厂模式
2009-04-14 19:25 759[关键字]:java,design pattern,设计模式, ... -
[原]方法返回值为数组的另一种表示方法
2009-04-25 22:28 977[时间]:2009-04-25 今天看到JDK的源代码 ... -
[原]SAX使用示例
2009-04-26 19:18 2053[标题]:[原]SAX使用示例 [时间]:2009-4-25 ... -
[原]责任链模式
2009-05-09 16:47 737[关键字]:java,design pattern,设计模式, ... -
[原]状态模式
2009-05-18 23:03 839[关键字]:java,design pattern,设计模式, ... -
[原]策略模式
2009-05-21 22:21 706[关键字]:java,design pattern,设计模式, ... -
[原]VC实现重启路由器
2009-05-29 23:36 2082[标题]:[原]VC实现重启路 ... -
[原]远程登录Windows Server 2003的当前会话
2009-06-01 11:19 2075[标题]:远程登录Windows Server 2003的当前 ... -
[原]Tomcat crossContext
2009-06-01 12:27 6103[标题]:Tomcat crossContext [时间]:2 ... -
[原]装饰模式1
2009-06-07 22:33 716[关键字]:java,design pattern,设计模式, ... -
[原]装饰模式3-Grep
2009-06-07 22:42 702[关键字]:java,design pattern,设计模式, ... -
[原]合成模式-透明的
2009-06-08 22:23 766[关键字]:java,design pattern,设计模式, ... -
[原]合成模式-安全的
2009-06-08 22:27 840[关键字]:java,design pattern,设计模式, ...
相关推荐
- **代理模式(Proxy Pattern)**:代理模式为一个对象提供一个代用品,控制对原对象的访问,而门面模式则为整个子系统提供一个统一的接口。 在实际开发中,例如在框架或库的设计中,门面模式被广泛应用。例如,...
门面模式(jzkangta).rar”这个压缩包中,包含了一套关于门面模式的讲解资源,包括一个可执行文件“[浪曦原创]JAVA设计模式 第8讲 门面模式(jzkangta).exe”,可能是一个演示或教学程序,以及一份“门面模式.ppt”的...
门面模式(Facade Pattern)是一种设计模式,它在软件工程中扮演着简化复杂系统接口的角色。当一个系统或子系统包含大量类,并且客户端需要与这些类进行交互时,门面模式可以提供一个高层次的单一接口,使得客户端的...
原始模型模式: 原始模型模式 通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原 型对象的方法创建出更多同类型的对象。 原始模型模式允许动态的增加或减少产品类, 产品 类不需要非得有任何事先...
23. 门面模式:门面模式是一种结构型设计模式,它为子系统提供了一个统一的接口,使得这些子系统更容易被使用。 以上23种设计模式在ASP.NET环境中都有具体的实现代码,通过这些实例,开发者可以深入理解每种模式的...
3.3 实现装饰器模式的关键是定义一个与原类相同接口的装饰类,它可以包含一个原类对象,并在其基础上添加新的行为。3.4 装饰器模式的不足在于如果过度使用,可能导致类的数量急剧增加,增加了理解和调试的难度。3.5 ...
这部分涉及到适配器模式、桥梁模式、合成模式、装饰模式、门面模式、享元模式和代理模式等,它们的主要作用是处理类与类之间的组合关系。 #### 行为模式 这部分则关注于类的行为,如职责链模式、命令模式、解释器...
12. 代理模式:在对象前放置一个代理以控制对原对象的访问。代理可以用于控制访问权限、增加额外功能或提供远程访问等。 13. 责任链模式:对象间形成链式结构,请求沿链传递,由链上的某个对象决定处理请求。这种...
13. **门面模式**:为子系统提供一个一致的界面,它封装了子系统的复杂性,并且提供了一个高层次的接口。 14. **模板方法模式**:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法...
- **实例**:在大型软件系统中,可能有多个子系统需要交互,门面模式提供了一个简单的接口,隐藏了内部子系统的复杂性。 #### 8. **适配器模式(Adapter Pattern)** - **定义**:将一个类的接口转换成客户希望的...
12. **代理模式**:代理模式是结构型模式,它在原有对象之外创建一个代理对象,代理对象控制对原对象的访问,可以实现对原对象的增强或监控。 13. **责任链模式**:责任链模式是行为型模式,它将多个处理者链接在...
21. 门面模式(Facade):为子系统提供一个一致的界面,门面模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 22. 享元模式(Flyweight):运用共享技术有效地支持大量细粒度的对象,减少内存占用。 ...
简单来说,外观模式的作用就像是一个门面,通过它我们可以更简便地与复杂的内部系统进行交互。 #### 应用场景 外观模式通常适用于以下几种情况: 1. **当不需要使用一个复杂系统的所有功能时**:可以通过创建一个...
2. **结构型模式**:如适配器模式、装饰器模式、代理模式、桥接模式、组合模式、门面模式、享元模式、外观模式。这些模式处理的是如何组合类或对象,形成更大的结构,关注如何简化接口、增强功能、或提供更灵活的...
9. 门面模式(Facade):为子系统提供一个统一的入口,简化客户端与其交互。 10. 工厂方法模式(Factory Method):定义一个创建对象的接口,由子类决定实例化哪个类,延迟实例化到子类。 11. 享元模式(Flyweight...
- **定义**:代理模式是一种结构型设计模式,它给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。 - **优点**: - 提供额外的操作。 - 控制对真实对象的访问。 - **缺点**: - 增加系统复杂度。 ...
9. 门面模式(Facade):门面模式提供一个简单的统一接口,隐藏了复杂的子系统,使得客户端更容易使用。 10. 工厂方法模式(Factory Method):工厂方法模式定义一个用于创建对象的接口,由子类决定具体实例化哪个...
除此之外,Jive论坛的源代码还可能涉及到其他设计模式,如组合模式用于构建层次结构,享元模式用于优化大量相似对象的创建,以及代理模式和门面模式来提供更简洁的接口和更好的性能。 通过对Jive论坛原代码的深入...
代理模式是一种结构型设计模式,允许你在不改变原接口的情况下为对象添加新的功能。通常用于控制对某个对象的访问,或是在访问前进行一些额外的操作,如缓存、日志记录等。 **应用场景**:远程代理,用于访问网络上...
13. **门面模式**:为子系统提供一个统一的接口,使得这一子系统更加容易使用。 14. **命令模式**:将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或者记录请求日志,以及支持可撤销的...