假设我有一个应用程序x,它经常更新,我需要用我的软件包修改这个应用程序,y。
要获取我的包,y,运行我修改x中的一个主要类(有没有更好的方法来执行此操作?)。在这一点之后,我尝试尽可能少地进行编辑。我这样做是因为当x更新时我可以轻松地复制我的修改,将调用添加到y并离开我们去。
现在我遇到了一个问题,我需要修改x的字体渲染器以使用更好的ttf字体,这将导致修改x中的整个类。
有没有办法覆盖x中的x,而不引用x中的y?我正在考虑在x中删除整个类并用扩展替换它,但是当x更新时会给我的头部带来额外的压力
提前致谢, 约旦
答案 0 :(得分:3)
你已经用非常笼统的方式描述了你的问题,所以我只能回答一般问题。你应该看看各种结构模式。 facade pattern旨在将程序的一个部分(包y)中的代码与另一个部分(包x)中的更改隔离开来。对于x的许多更改,您只需更新外观,而y中的其他内容都不需要更改。
相关模式包括adapter pattern和decorator pattern。
鉴于你所描述的内容,我建议避免使用子类化。它创造的依赖性远远超过你想要的依赖性。
答案 1 :(得分:0)
你做了一些事情:
public class x{ some schtuff}
然后你这样做:
Public class y extends x { other stuff}
希望这有帮助,我的儿子有同样的问题!