java类和接口用法_java-如何使用接口和实现处理类依赖

我正在将ObjectAid与Eclipse结合使用,以为最新的Java项目生成UML类图,目前我有a handful of situations like this,其中两个接口之间以及其中一个接口的实现之一都具有依赖性.在这里,foo是我正在使用的图形库.

在前面的示例中,FooCanvas将ITexture对象绘制到屏幕上,并且FooCanvas及其接口ICanvas都将ITexture对象作为其方法的参数.

canvas类中导致此依赖关系的方法如下:

void drawTexture(ITexture texture, float x, float y);

另外,我尝试使用Java的泛型来修改方法签名:

void drawTexture(T texture, float x, float y);

这样的结果是一个类图,其中接口和实现类之间只有依赖关系,而画布对象对纹理没有依赖关系.我不确定这是否更理想.

接口和实现对另一个接口的依赖关系是否是预期的模式,还是使实现与接口的依赖关系“隔离”的典型和/或可能?还是通用方法是理想的解决方案?

解决方法:

您的问题是您正在尝试解决错误的问题.面向对象设计的主要点之一是鲁棒性和灵活性,即您可以在不更改/破坏其他代码的情况下更改某些实现的数量.

Encapsulation is a means, not an end. There’s nothing inherently desirable about encapsulation. Encapsulation is useful only because it yields other things in our software that we care about. In particular, it yields flexibility and robustness.

您应该问的问题是:

how much code might be broken is to count the functions that might be

affected. That is, if changing one implementation leads to more

potentially broken functions than does changing another

implementation.

关于你的例子,别人告诉你什么是理想的并不是特别容易.您应该公开ITexture接口吗?您是否应该引入一个名为IDrawable的新接口,该接口将扩展Texture?目前的方法还可以.但是我实际上不知道,因为我不知道实现!如果您更改纹理实现,则一切都可能会中断! **这是一个问题,只有考虑到我上面提到的几点,您才能回答:

>如果更改了ITexture实现,则需要更改多少代码或将中断代码?

>当前实施是否足够健壮.

>您可以用当前的实现扩展系统多少?

标签:architecture,java

来源: https://codeday.me/bug/20191122/2060318.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值