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



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

选项1-子类

如果我想使用LinearLayout,则创建CustomLinearLayout。如果我想使用ImageView,我会创建CustomImageView。在这些自定义类中,我以相同的方式覆盖draw。这似乎并不有效,因为我正在重复代码并扩展了许多几乎没有任何作用的类。

选项2-子类超级类

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

有更好的方法吗?我想念什么吗?

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

最新更新