【发布时间】:2017-02-04 05:15:01
【问题描述】:
我有以下类结构(Blah === ExtBlah):
Base
+--[ ExtBase ] --???-- [ ExtBlah ] --- .. more scripts ...
+--[ Blah ]
+---[ Script1 ]
+---[ Script2 ]
+---[ ....... ]
+---[ ScriptN ]
现在我需要编写更多需要扩展 Blah 的脚本,但是对于新的脚本案例,Blah 必须扩展“ExtBase”,而不是“Base”。
我仍然需要 Blah,因为 Scripts1-N 必须依赖于“Base”,而不是“ExtBase”。
我也不想创建 Blah 的副本,即 ExtBlah,因为这意味着代码的重复,并且支持起来更加困难和混乱。
有什么想法吗?
【问题讨论】:
-
将 Blah 嵌入 ExtBlah 以使其成为适配器
-
是的,这里可以使用Delegation Pattern。如果您使用的是 NetBeans,
Alt-Ins会弹出一个菜单,允许自动生成方法。 -
另外,Java 没有“脚本”,所以请不要这样称呼它们。可能您的意思是类,但“源文件”和“编译单元”也可能是合适的。
-
我不能嵌入,因为 Base&ExtBase 是 jar 的一部分。我可以访问 jar,但它是我不想污染它的框架的一部分。谢谢
-
查看 aop (aspectj) 声明父母
标签: java class inheritance design-patterns