Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >带有状态的外观设计模式

带有状态的外观设计模式
EN

Stack Overflow用户
提问于 2013-04-20 02:05:27
回答 2查看 289关注 0票数 1

在实现了一个外观来隐藏一些复杂的子系统之后,我们最终只有一个客户端类。但问题是,这个类仍然有100多个API。这似乎违背了内聚力原则。facade类还管理状态,以便可以隐藏子系统之间使用的对象。该系统由子系统(例如,项目、策略、用户、权限等)组成,我认为我们可以以更模块化的方式设计外观。在这种情况下,有没有可以很好地与facade配合使用的设计模式?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-20 02:30:14

正如您已经说过的,在一个类中包含超过100个API不是一个好主意。它们可以被分成不同的外观类。通用功能可以移动到基类中。这不是一种设计模式,而是面向对象的核心。该状态仍然可以保持。我不确定您是否已经将会话用作保存状态的存储。如果是这样的话,您仍然可以继续这样做。

您还可以使用缓存来存储状态或使用数据库。如果您正在使用EJB,那么SFSB将提供此功能。

票数 1
EN

Stack Overflow用户

发布于 2013-04-20 02:31:49

如果我们遵循域驱动设计的原则,那么您可以将您的系统分为无状态服务和有状态实体。在单个外观中组合服务和状态机不一定是一个好主意。

顺便说一句,在我看来,使用facade几乎就像在面向对象语言上强制进行过程编程一样。外观只是一组函数,就像非OOP语言中的模块一样。因此,通常我在使用OOP时尽量避免使用facades,尽管实用一点是很好的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16115777

复制
相关文章
外观设计模式
无场景不设计,下面有这样一个场景: 有这样一个需求:需要组建一个家庭影院,主要的影院设备有DVD播放器、投影仪、自动屏幕、环绕立体声、爆米花机。要求将这些设备进行统一管理。大致过程分为:
@派大星
2023/06/28
1230
外观设计模式
外观设计模式解读
1) 外观模式(Facade),也叫“过程模式:外观模式为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用 2) 外观模式通过定义一个一致的接口,用以屏蔽内部子系统的细节,使得调用端只需跟这个接口发生调用,而无需关心这个子系统的内部细节
一个风轻云淡
2023/10/15
1860
外观设计模式解读
结构型设计模式:外观设计模式
Facade(外观)模式为子系统中的各类(或结构与方法)提供一个简明一致的界面,隐藏子系统的复杂性,使子系统更加容易使用。
程序你好
2018/09/29
4510
结构型设计模式:外观设计模式
C#设计模式——(结构型-外观设计模式)
隐藏了系统的复杂性,并向客户端提供了一个可以访问系统的同一接口,这个统一接口组合了多个子系统的多个接口,是的子系统更容易被访问和使用。
用户10053120
2022/10/11
3100
设计模式之状态模式(state模式)状态模式的具体实例状态模式的分析
面向对象编程中,类用来表示对象,一般情况下,我们需要考虑用类来表示什么具体的东西。类对应的东西可能存在于真实世界中,也可能不存在于真实世界中。 状态模式所表示的类,一般就不存在真实世界的某个东西,因为状态模式中的类是用来表示状态的。状态一般都是抽象的,所以往往没有具体对应于真实世界的对象。 我们用类来表示状态,那么不同的状态就用不同的类来表示,我们只要通过切换不同的类就可以切换不同的状态。
desperate633
2018/08/22
9530
设计模式之状态模式(state模式)状态模式的具体实例状态模式的分析
看得懂的外观设计模式 python3 实现
外观设计模式在平常的代码编写中,会经常使用。在平常代码的编写时,即使程序员没有从标准上认识过外观设计模式,但在开发的过程中,也会从代码的多方面角度考虑,从而编写了符合外观设计模式的代码。
1_bit
2020/10/23
3370
看得懂的外观设计模式 python3 实现
解锁设计模式的神秘面纱:编写无懈可击的代码之外观设计模式
设计模式是一种在软件设计中广泛应用的概念,它们代表了解决特定问题或实现特定功能的经验性最佳实践和通用解决方案。设计模式是经过反复验证和测试的,可以帮助开发人员更有效地解决常见的设计问题,提高代码的可维护性、可扩展性和可重用性。
杨不易呀
2023/09/26
1600
解锁设计模式的神秘面纱:编写无懈可击的代码之外观设计模式
看得懂的外观设计模式 python3 实现
外观设计模式在平常的代码编写中,会经常使用。在平常代码的编写时,即使程序员没有从标准上认识过外观设计模式,但在开发的过程中,也会从代码的多方面角度考虑,从而编写了符合外观设计模式的代码。
1_bit
2020/07/03
3070
看得懂的外观设计模式 python3 实现
状态模式
状态模式中的行为是由状态来决定,不同的状态下有不同的行为。当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。
提莫队长
2019/02/21
7490
状态模式
状态模式定义: 英文定义:The State Pattern allows an object to alter its behavior when its internal state changes. The object will appear to change its class. 中文定义:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。
卡尔曼和玻尔兹曼谁曼
2019/01/22
6110
状态模式
设计模式(8)-状态模式(关注状态之间的变化)
状态模式(State Pattern)是设计模式的一种,属于行为模式。 定义(源于Design Pattern):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。   状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化。 意图:允许一个对象在其内部状态改变时改变它的行为 适用场景:   1.一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为。   2.一个操作中
cloudskyme
2018/03/20
9870
设计模式(8)-状态模式(关注状态之间的变化)
状态模式
我们在实现审核业务的时候,可能在没使用状态模式的时候,使用if else或者switch case进行操作
阿超
2022/08/17
3870
状态模式
状态模式
当代码中存在太多判断分支时,我们可能需要使用状态模式来优化。优化模式解决的问题是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的问题逻辑简化。 概念比较抽象,下面的代码,定义了State抽象状态类,内部使用了Context类,子类实现时在handle中定义与不同状态下的行为。
桑鱼
2020/03/18
4860
状态模式
@派大星
2023/06/28
1700
状态模式
状态模式
今天要说的设计模式——状态模式,个人觉得非常有意思,因为此种设计模式的运用场景几乎可以说是每个程序里都可以用上。当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。定义一般来说都是晦涩难懂的。我们同样来通俗一点解释,首先解释这种模式的运用场景,这种模式一般用在有大量if-else的分支判断上,不同的状态也就表示为不同的if条件,进入不同的if分支执行操作后就好像是改变了其类。 image.png 这就是状态模式的UML类结构图,其实在这里看UML类结构图还是有点蒙逼的样子,if-els
用户1148394
2018/01/09
6860
状态模式
状态模式.
 我们以一个网约车订单场景来做一个简单的 Demo 示例。订单分为四个状态 —— New(新建)、Running(进行中)、Cancel(取消)、End(结束)。当乘客下单时,订单状态进入 New 状态。这时,如果有司机接单,订单状态进入 Running 状态;如果无司机接单,乘客取消订单,订单进入 Cancel 状态。最后,乘客评价,Running 状态的订单进入 End 状态。
JMCui
2019/01/28
5210
状态模式.
状态模式
状态模式允许在内部状态时改变它的行为,在外部看起来好像修改了类。状态模式可以延伸出状态机的概念,状态机据我自己所知在电商系统中用来控制订单状态的流转。关于状态机,大家可以在评论中可以补充一下(状态机的更多应用场景)。
shysh95
2019/12/30
4270
状态模式
设计模式 ——— 状态模式
STATE(状态) ———— 对象行为型模式 意图 允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。 状态和行为 所谓对象的状态,通常指的就是对象实例的属性的值;而行为指的就是对象的功能,再具体点说,行为多半可以对应到方法上。 状态模式的功能就是分离状态的行为,通过维护状态的变化,来调用不同的状态对应的不同的功能。 也就是说,状态和行为是相关联的,它们的关系可以描述为:状态决定行为。 由于状态是在运行期被改变的,因此行为也会在运行期,根据状态的改变而改变,看起来,同一个对象,在
tomas家的小拨浪鼓
2018/06/27
5730
设计模式-状态模式
最近项目中有个项目是用到了状态得操作,比如从审核到审核通过再到审核查看审核中再到审核完成等一系列得状态。
技术从心
2020/11/06
4330
设计模式----状态模式
状态模式: 允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。 状态模式的结构: 环境(Context)角色,也称上下文:定义客户端所感兴趣的接口,并且保留一个具体状态类的实例。这个具体状态类的实例给出此环境对象的现有状态。 抽象状态(State)角色:定义一个接口,用以封装环境(Context)对象的一个特定的状态所对应的行为。 具体状态(ConcreteState)角色:每一个具体状态类都实现了环境(Context)的一个状态所对应的行为。 源代码: 环境角色类: public clas
SuperHeroes
2018/05/30
5540

相似问题

带有接口的外观设计模式

11

外观设计模式

40

外观设计模式和抽象

32

库存的外观设计模式

20

如何使用外观设计模式?

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文