我听说Liskov替换原则(LSP)是面向对象设计的基本原则.它是什么以及它的使用例子是什么?
oop liskov-substitution-principle definition design-principles solid-principles
我已经在维基百科和其他网站上阅读过关于OSGi的内容,但我并没有真正看到全局.它说它是一个基于组件的平台,您可以在运行时重新加载模块.另外,给出的"实际示例"是Eclipse插件框架.
我的问题是:
OSGi的清晰简单定义是什么?
它解决了哪些常见问题?
"常见问题"我指的是我们每天面临的问题,例如"OSGi可以做些什么来提高我们的工作效率/乐趣/简单?"
有人能给我一个单一责任原则的例子吗?我试图理解,在实践中,一个班级有一个单一的责任,因为我担心我可能每天都违反这条规则.
oop single-responsibility-principle definition design-principles solid-principles
我正在阅读有关SOLID和其他设计原则的内容.我认为ISP与"程序接口,而非实现"相同.但看起来这些是不同的原则?
有区别吗?
oop design-patterns solid-principles interface-segregation-principle
这个问题不是关于OCP是什么.我也不是在寻找简单的答案.
所以,这就是我问这个的原因.OCP最初是在80年代后期描述的.它反映了当时的思想和背景.令人担忧的是,在代码已经过测试并投入生产之后,更改源代码以添加或修改功能将最终变得风险太大且成本高昂.因此,我们的想法是尽可能避免更改现有的源文件,并且只以子类(扩展)的形式添加到代码库中.
我可能错了,但我的印象是基于网络的版本控制系统(VCS)当时并未广泛使用.关键是VCS对于管理源代码更改至关重要.
重构的想法是最近的.那些支持自动重构操作的复杂IDE当然不存在.即使在今天,许多开发人员也没有使用最好的重构工具.这里的要点是,这样的现代工具允许开发人员在几秒钟内安全地改变数千行代码.
最后,今天,自动化开发人员测试(单元/集成测试)的想法很普遍.有许多免费和复杂的工具支持它.但是,如果我们从不/很少更改现有代码,那么创建和维护大型自动化测试套件有什么用?正如OCP所要求的那样,新代码只需要新的测试.
那么,OCP今天真的有意义吗?我不这么认为.相反,如果新功能不需要新类,我确实更愿意在添加新功能时更改现有代码.这样做可以使代码库更简单,更小,更易于阅读和理解.破坏以前功能的风险将通过VCS,重构工具和自动化测试套件进行管理.
我正在尝试了解插件架构。特别是在 Windows Live Writer 的实现中使用的那个。我指的是您可以通过添加/删除 DLL(+ 配置)来配置/启用/禁用/添加/删除附加功能的样式。
我希望在基于 Web 的应用程序中看到类似的东西。任何人都可以指出我正确的方向吗?
提前致谢。
-SK
有没有一种方法可以在一个简单的 Java 应用程序中实现插件,可以在需要时启动并且有很好的文档记录?
我正在寻找的是类似于 OSGI、JPF 和 JSPF 的东西。但是,OSGI 很复杂,JPF 没有很好的文档记录,而且 JSPF 不允许您仅在需要时才启动插件。
例如,有一个插件文件夹。任何人都可以通过实现我提供的接口来创建插件。创建插件后,任何想要使用它的人只需将其放入我的应用程序的 plugins 文件夹中,应用程序就会加载它。
或者,更好的词是“附加组件”。
有一些与我的问题类似的问题,但我想知道更多。这些问题都有模糊的答案。
http://stackoverflow.com/questions/2369499/how-to-make-java-plugins?rq=1
http://stackoverflow.com/questions/7587318/how-can-i-write-my-own-plugin-in-java
Run Code Online (Sandbox Code Playgroud)
如果您不知道,请告诉我如何在我的应用程序中使用 JPF。非常感谢您花时间阅读本文。
编辑:我已经解决了我的问题。我现在正在使用 JSPF - 它非常适合我的目的。感谢所有试图提供帮助的人,我为没有提出“真正的问题”而道歉。
oop ×4
definition ×2
java ×2
asp.net ×1
c# ×1
components ×1
glossary ×1
interface-segregation-principle ×1
liskov-substitution-principle ×1
osgi ×1
plugins ×1
principles ×1