Java设计模式:多个类上的相同方法

时间:2012-11-08 17:55:49

标签: java android

我正在创建一个Android应用程序。我需要在许多UI类上覆盖draw方法来创建自定义外观。这些类都是子类View。我想知道最好的方法是什么。我希望能够尽可能多地重用代码,因此我在组织事情时寻求帮助。正如我现在所看到的,我有两个选择:

选项1 - 子类一切

如果我想使用LinearLayout,我会创建CustomLinearLayout。如果我想使用ImageView,我会创建CustomImageView。在每个自定义类中,我都以完全相同的方式覆盖draw。这似乎并不高效,因为我重复代码并扩展了几乎几乎没有的类。

选项2 - 超类的子类

我最初的想法是扩展View并创建CustomView,因为它已经是我想要使用的所有类的超类。但是,这并不起作用,因为我想要使用的所有现有子类仍在扩展View,而不是CustomView

有更好的方法吗?我错过了什么吗?

1 个答案:

答案 0 :(得分:4)

一种可能的解决方案是将绘制逻辑提取到单独的类DrawingCode中。这可能包含静态方法,或者您甚至可以使用DrawingCode的实例来使用其他参数自定义绘图代码。当然,您仍然需要覆盖draw()方法,但只需编写一行代码来调用DrawingCode.draw(param1, param2)。这样您就可以将绘图代码存储在一个中心位置,不要重复自己。