松散耦合模块初始化的位置

Location of Initialization of loosely coupled modules

本文关键字:位置 初始化 模块 耦合      更新时间:2023-10-16

如果我的问题已经回答,请原谅我软件工程,找不到直接答案或一些清晰的信息。

我正在开发一个小型应用程序,简而言之,该应用程序连接到Web服务,获取一些数据并根据获取的数据播放一些音乐。我已经将应用程序的所有部分分为不同的"模块接口",例如" WebServiceInterface"," ConfigurationInterface"," SystemTrayInterface"等。我正在理解和amp;在我的应用中实现SRP(通常是固体)。

现在,所有这些接口&它们的实现在单独的标题/来源上被打破。所以我问题的简短版本是:"关于SRP,我应该声明& amp; amp;应用程序启动所需的必要的"模块"并使用它们?"

我的意思是,必须有一个位置(main(),一个函数或类),其中某些类被声明并初始化为适当的状态,以便应用程序实际启动。我的问题源于SRP指出的事实:

每个模块或班级都应在软件提供的功能的一个部分上承担责任,该责任应完全由类

封装

但是我很困惑,如果没有一个包含所有声明& amp;的地方。我的主要模块的实例化,我应该如何启动应用程序?

我看到了:https://stackoverflow.com/a/5744241/1044356

两个类之间的松散耦合意味着每个类对另一类的内部行为的了解很少。 您可能在属于同一"模块"或"软件包"的类之间具有更高程度的"耦合",这不是一个坏练习

这是否意味着我可以有一个将界面围绕界面包裹到彼此独立并设置它们的模块的类?对我来说,这听起来像是上帝的课程。

我可以在需要的情况下提供其他信息以清除任何歧义。

封装是关于隐藏内部实现详细信息。应用对象不需要知道Web服务对象如何检索数据,只有当该数据(应用程序)提出正确的格式请求时,它将获得数据以返回数据。它确实不是表示如果需要提出此类请求,则该应用程序无法实例化。

一些成语(例如PIMPL)使您几乎可以通过为私人实施辩护的公共接口来隐藏所有实现详细信息。使用这样的成语您的应用程序WOD仅知道包装器,甚至无法看到使私有对象工作所需的数据。

这可以将其带到一个极端,其中唯一独立的对象(意味着不是另一个对象或至少由他人拥有的对象)是应用程序对象。