在实现了一个外观来隐藏一些复杂的子系统之后,我们最终只有一个客户端类。但问题是,这个类仍然有100多个API。这似乎违背了内聚力原则。facade类还管理状态,以便可以隐藏子系统之间使用的对象。该系统由子系统(例如,项目、策略、用户、权限等)组成,我认为我们可以以更模块化的方式设计外观。在这种情况下,有没有可以很好地与facade配合使用的设计模式?
发布于 2013-04-20 02:30:14
正如您已经说过的,在一个类中包含超过100个API不是一个好主意。它们可以被分成不同的外观类。通用功能可以移动到基类中。这不是一种设计模式,而是面向对象的核心。该状态仍然可以保持。我不确定您是否已经将会话用作保存状态的存储。如果是这样的话,您仍然可以继续这样做。
您还可以使用缓存来存储状态或使用数据库。如果您正在使用EJB,那么SFSB将提供此功能。
发布于 2013-04-20 02:31:49
如果我们遵循域驱动设计的原则,那么您可以将您的系统分为无状态服务和有状态实体。在单个外观中组合服务和状态机不一定是一个好主意。
顺便说一句,在我看来,使用facade几乎就像在面向对象语言上强制进行过程编程一样。外观只是一组函数,就像非OOP语言中的模块一样。因此,通常我在使用OOP时尽量避免使用facades,尽管实用一点是很好的。
https://stackoverflow.com/questions/16115777
复制