`
- 浏览:
112987 次
- 性别:
- 来自:
长沙
-
设计模式
门面模式
门面模式又称Facade模式使用Facade模式可以为子系统中的一组接口提供一个一致的界面;简化方法的调用、降低系统之间的耦合度。
下面来看下门面模式的使用方式:
//定义一个Court类、并提供一些方法
Public class Court{
Public void register(){
//立案
}
Public void hold ACourt(){
//开庭
}
Public void adjudge(){
//判决
}
Public void intercede(){
//调解
}
}
再定义layeroffice类表示法院所提供 的一些操作
Public class LawyerOffer(){
Public void writeOffice{
//写诉状
}
Public void collectEvidence(){
//收集证据
}
}
对于我们开发者而言、当我们需要调用Court类和LawyerOffer中的方法时,需要了解Court类和LawyerOffer类中的各个方法、在分工协作中,客户端会设计到多个细粒度的方法;这样会带来子系统之间的耦合度过于强的问题、而Facade模式正可以解决这问题。
下面在LawsuitFacade类中、我们使用粗粒度的方法law()以及execute()来对Court以及LawyerOffer类中的方法进行包装;对开发人员来说、类中细粒度的方法被隐藏了。
然后在客户端类中直接与调用者打交道、不用直接调用了。
Public class Client{
Public void test(){
LawsuitFacade facade = new LawsuitFacade();
Facade.law();
Facade.execute();
}
}
Public static void main(String[] args){
Client client = new Client();
Client.test();
}
模版方法模式
抽象角色EveningPlan类定义了多个方法、其中act()方法声明为abstract的、以便让子类实现、这个操作被称为基本操作、它是构成顶级逻辑的一个组成步骤。它是构成顶级逻辑的一个组成步骤。
executePlan()方法给出了顶级逻辑的实现、是抽象角色中顶级行为的实现,这个方法是通常被称为模版方法
Public abstract class EveningPlan{
Public final void sing(){
//歌唱家
}
Public abstract void act();
Public void dance(){
//舞蹈家
}
Public void executePlan(){
This.sing();
This.act();
This.dance();
}
}
当继承EveningPlan类时、就必须实现act()方法
Public class Client extends EveningPlan{
Public void act(){
//演员家
}
Public static void main(String[] args){
Client client = new Client();
Client .executePlan();
}
}
如果需要限制子类不能对模板类的顶级逻辑进行重写操作、只需要为模板类中的executePlan()方法加上final修饰符即可。
使用模版方法模式可以将大的方法重构、将程序中的变化部分抽象出来,交给子类来实现。
还允许你建立独立的类负责独立的行为、从而将独立的行为委派到独立的对象里面。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
研磨设计模式4
1.3 描述设计模式 4 1.4 设计模式的编目 5 1.5 组织编目 7 1.6 设计模式怎样解决设计问题 8 1.6.1 寻找合适的对象 8 1.6.2 决定对象的粒度 9 1.6.3 指定对象接口 9 1.6.4 描述对象的实现 10 1.6.5 运用复用机制 13 ...
1.3 描述设计模式 4 1.4 设计模式的编目 5 1.5 组织编目 7 1.6 设计模式怎样解决设计问题 8 1.6.1 寻找合适的对象 8 1.6.2 决定对象的粒度 9 1.6.3 指定对象接口 9 1.6.4 描述对象的实现 10 1.6.5 运用复用...
1.3 描述设计模式 4 1.4 设计模式的编目 5 1.5 组织编目 7 1.6 设计模式怎样解决设计问题 8 1.6.1 寻找合适的对象 8 1.6.2 决定对象的粒度 9 1.6.3 指定对象接口 9 1.6.4 描述对象的实现 10 1.6.5 运用复用...
人人都懂设计模式 设计模式是软件开发中的一种解决方案,它提供了一种通用的设计思想和方法论,可以帮助开发者更好地设计和实现软件系统。设计模式可以分为三大类:创建型模式、结构型模式和行为型模式。 在本书中...
1.3 描述设计模式 4 1.4 设计模式的编目 5 1.5 组织编目 7 1.6 设计模式怎样解决设计问题 8 1.6.1 寻找合适的对象 8 1.6.2 决定对象的粒度 9 1.6.3 指定对象接口 9 1.6.4 描述对象的实现 10 1.6.5 运用复用机制 13 ...
1.3 描述设计模式 4 1.4 设计模式的编目 5 1.5 组织编目 7 1.6 设计模式怎样解决设计问题 8 1.6.1 寻找合适的对象 8 1.6.2 决定对象的粒度 9 1.6.3 指定对象接口 9 1.6.4 描述对象的实现 10 1.6.5 运用复用机制 13 ...
GOF(Gang of Four)设计模式,由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位专家在他们的著作《设计模式:可复用面向对象软件的基础》中提出,被誉为设计模式的经典之作。本资源包含了GOF设计...
《Head First 设计模式》与《Java设计模式(第2版)》是两本非常重要的IT书籍,专注于软件开发中的设计模式。设计模式是解决软件设计中常见问题的经验总结,它们提供了一种标准的方法来处理特定场景下的问题,使得代码...
1.3 描述设计模式 4 1.4 设计模式的编目 5 1.5 组织编目 7 1.6 设计模式怎样解决设计问题 8 1.6.1 寻找合适的对象 8 1.6.2 决定对象的粒度 9 1.6.3 指定对象接口 9 1.6.4 描述对象的实现 10 1.6.5 运用复用机制 13 ...
设计模式 的分类 总体来说设计模式分为三大类: 创建型模式(5): 工厂方法模式 、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式(7): 适配器模式、装饰器模式、代理模式、外观模式、桥接模式、...
在计算机科学领域,设计模式是软件工程中用于解决特定问题的一般性方案,它们是经过实践检验的最佳实践。这些模式被广泛应用于面向对象软件设计中,能够提高代码的可重用性、灵活性和可维护性。设计模式通常被划分为...
这个压缩包文件"设计模式(包含5个设计模式)含源代码报告.rar"显然是一份宝贵的资源,它涵盖了五个核心的设计模式,并附带了详细的类图、源代码以及文档报告,这对于学习和理解设计模式至关重要。 首先,我们要探讨...
设计模式 四人帮设计模式。比较经典的设计模式。
设计模式是构建大型软件系统zui强大的方法之一,优化软件架构和设计已经逐渐成为软件开发和维护过程中的一个重要课题。 Python设计模式(第2版)通过11章内容,全面揭示有关设计模式的内容,并结合Python语言进行示例...
在《设计模式讲解JAVA》一书中,作者CBF4LIFE以《三国演义》中刘备娶亲的典故为背景,通过生动的故事和代码示例,深入浅出地讲解了各种设计模式的概念、应用和实现。下面将详细探讨书中的关键知识点。 首先,书中...
《新版设计模式手册 - C#设计模式(第二版)》是一部深入探讨C#编程中设计模式的权威指南,尤其适合已经有一定C#基础并希望提升软件设计能力的开发者阅读。设计模式是解决软件开发中常见问题的经验总结,是软件工程的...
有关设计模式的练习题。设计模式的分类。等相关的联系。学西设计模式必选习题。有助于加强对于设计模式的理解。
全书用两章篇幅对设计模式和GRASP作了基本介绍,3种设计模式的讲解:对于每一种模式,先给出定义,接着通过类比方式用一个现实世界中的例子说明模式的应用,然后分别以C#和Java代码例述模式的架构实现。最后一章给出...
设计模式02 设计模式03-创建型模式 设计模式04-创建型模式2 设计模式05-建造者、原型模式 设计模式06-适配器、桥接、组合模式 设计模式07-组合模式、装饰模式 设计模式09-外观模式、享元模式 设计模式10-代理模式、...