Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java OSGI中的实体原理_Java_Oop_Osgi_Solid Principles - Fatal编程技术网

Java OSGI中的实体原理

Java OSGI中的实体原理,java,oop,osgi,solid-principles,Java,Oop,Osgi,Solid Principles,我在读这篇文章: 作者指出,使用实体原理最重要的地方是在模块接头处,“正是系统中的这些关节需要最大的灵活性和弹性。这是由变化驱动的。封装在单个模块中的更改所造成的威胁比波及多个模块的更改所造成的威胁要小。” 因为OSGI可以用来定义这些关节,所以我决定看看OSGI,看看它是如何使用实体原理的 单一责任很简单,模块/捆绑包/jar应该只做一件事。依赖倒置原则对我来说似乎很清楚,模块/捆绑包/jar中的实现不应该依赖于另一个实现,而应该依赖于抽象。模块不应该公开任何实现细节。OSGI通过创建组件模

我在读这篇文章:

作者指出,使用实体原理最重要的地方是在模块接头处,“正是系统中的这些关节需要最大的灵活性和弹性。这是由变化驱动的。封装在单个模块中的更改所造成的威胁比波及多个模块的更改所造成的威胁要小。”

因为OSGI可以用来定义这些关节,所以我决定看看OSGI,看看它是如何使用实体原理的

单一责任很简单,模块/捆绑包/jar应该只做一件事。依赖倒置原则对我来说似乎很清楚,模块/捆绑包/jar中的实现不应该依赖于另一个实现,而应该依赖于抽象。模块不应该公开任何实现细节。OSGI通过创建组件模式来实现这一点l发布或参考服务


但是其他原则呢?例如Liskov替换原则或接口隔离原则,我在OSGI的哪里可以找到这些原则的示例?

模块需要符合其发布的接口(Liskov替换),这是其唯一的入口点(接口隔离)。

正是尊重其发布的界面“这有点混乱,因为目前的接口无法检查契约,只有抽象类才能这样做。让我试着充实一下您所说的内容。BundleActivator有一个已发布的接口,并使用模板方法DP。子类可以覆盖一个或多个步骤,以允许不同的行为,同时确保仍遵循特定的行为。此外,BundleActivator行为可以通过前置和后置条件进行验证。启动后,捆绑包应处于启动状态,停止后,捆绑包应处于停止状态。BundleActivator还符合接口隔离,因为实现者不需要实现他们不使用的方法,每个模块都需要启动和停止。