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

注册 | 登录

java设计模式之外观模式Facade

jazywoo123 分享于 2012-09-15

推荐:设计模式之外观模式(Facade)摘录

23种GOF设计模式一般分为三大类:创建型模式、结构型模式、行为模式。 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建、组合和表示它的那些对象。

2019阿里云全部产品优惠券(新购或升级都可以使用,强烈推荐)
领取地址https://promotion.aliyun.com/ntms/yunparter/invite.html

1、 意图 为子系统中的一组接口提供一个一致的界面,Façade模式定义了一个高层接口,这一接口使得这一子系统更加容易使用。 2、 适用性 在遇到以下情况时使用: 当你要为一个复杂子系统提供一个简单接口时。 客户程序与抽象类的实现部分之间存在着很大的依赖性。 当你需要构建一个层次结构的子系统时,使用façade模式定义子系统中每层的入口。 3、 结构 4、 参与者 Façade

知道哪些子系统类负责子系统对象;

将客户的请求代理给适当的子系统对象。

Subsystemclasses

实现子系统的功能。

处理由Façade对象指派的任务。

没有façade的任何相关信息;即没有指向façade的指针。 5、 协助 客户程序通过发送请求给Façade的方式与子系统通讯,Façade将这些消息转发给适当的子系统对象。 使用Façade的客户程序不需要直接访问子系统对象。

6、 效果 Façade模式有以下有点: 1)

它对客户屏蔽子系统组件,因而减少了客户处理的对象的数目并使得子系统使用起来方便。 2)

它实现了子系统与客户之间的松耦合关系,而子系统内部的功能组件往往是紧耦合的。 3)

它并不限制它们使用子系统类,因此可以在系统易用性和通用性之间加以选择。 7、 实现 1)

降低客户—子系统之间的耦合度;用抽象类实现Façade而它的具体子类对应于不同的子系统实现,这可以进一步降低客户与子系统的耦合度。 2)

公共子系统类与私有子系统类;一个子系统类与一个类的相似之处是,它们都有接口并且它们都封装了一些东西——类封装了状态和操作,而子系统封装了一些类。 8、 相关示例 Model [java]

view plain copy package com.examples.pattern.facade;

public interface IModel_A {

public void testA();

}

[java]

view plain copy package com.examples.pattern.facade;

public class Model_A_impl implements IModel_A {

@Override

public void testA() {

System.out.println("这是模块A的测试代码...");

}

}

[java]

view plain copy package com.examples.pattern.facade;

public interface IModel_B {

public void testB();

}

[java]

view plain copy package com.examples.pattern.facade;

public class Mod

推荐:java设计模式之外观模式(9)

外观模式又叫门面模式。 门面模式是对象的结构模式,外部与一个子系统的通信必须通过一个统一的门面对象进行。 门面模式提供一个高层次的接口,使得子系统更易于

el_B_impl implements IModel_B {

@Override

public void testB() {

System.out.println("这是模块B的测试代码...");

}

}

[java]

view plain copy package com.examples.pattern.facade;

public interface IModel_C {

public void testC();

}

[java]

view plain copy package com.examples.pattern.facade;

public class Model_C_impl implements IModel_C {

@Override

public void testC() {

System.out.println("这是模块C的测试代码...");

}

}

Façade [java]

view plain copy package com.examples.pattern.facade;

public class Facade {

public void test() {

IModel_A ma = new Model_A_impl();

ma.testA();

IModel_B mb = new Model_B_impl();

mb.testB();

IModel_C mc = new Model_C_impl();

mc.testC();

}

}

Client [java]

view plain copy package com.examples.pattern.facade;

public class Client {

public static void main(String[] args) {

new Facade().test();

}

}

9、 相关模式 Abstract Factory模式可以与Façade模式一起使用以提供一个接口,这个接口可用来以一种子系统独立的方式创建子系统对象。Abstract Factory也可以代替Façade模式隐藏那些平台相关的类。 Mediator模式与Façade模式的相似支出是,它抽象了一些已有的类的功能。然而,Mediator的目的是对同事之间的任意通讯进行抽象,通常集中不属于任何单个对象的功能。Mediator的同事对象知道中介者并与它通信,而不是直接与其他同类对象通信。相对而言,Façade模式仅对子系统对象的接口进行抽象,从而使它们更容易使用;它并不定义新功能,子系统也不知道Façade的存在。

推荐:java设计模式之外观模式

外观模式:外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子

1、 意图 为子系统中的一组接口提供一个一致的界面,Façade模式定义了一个高层接口,这一接口使得这一子系统更加容易使用。 2、 适用性 在遇到以下情况时使用: 当你要为一个复杂子系统提供一个

相关阅读排行


用户评论

游客

相关内容推荐

最新文章

×

×

请激活账号

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

您的注册邮箱: 修改

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

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