如何为现有类添加功能?

时间:2019-10-08 12:29:26

标签: android android-custom-view

当前,我正在开发一个android库。基本上,这个想法是向存在的任何Android小部件添加一些功能。该库用于创建复合视图,用户应该能够将每个现有的android小部件/视图转换为具有一些我想动态添加的附加功能的复合视图。

这些视图中的每一个视图在XML文件中仍然应该可用,这意味着我不能过多地更改构造函数。

另一个要求是我需要一个选项供用户为视图提供一些类。那样的话,我的意思是创建的复合视图将具有一个名为viewStore的公共变量。这种类型的viewStore要么是用户对ViewStore接口的实现(首选方式,但是我很确定这将需要生成代码,如稍后所述),或者将通过泛型提供。

最后,复合视图将具有以下文件夹结构:

  • MyView文件夹
    • MyView扩展了CoolViewWithViewStore扩展了AndroidWidgetChoosenByUser
    • MyViewStore实现了ViewStore <-在CoolViewWithViewStore中使用

一个选择是扩展每个小部件。我认为我不需要解释为什么这是一个坏主意。此外,用户无法提供所需的其他类。

我想到的另一个是代码生成的注释。我在这里遇到的问题是,用户需要访问MyView中的CoolViewWithViewStore变量,这是不可能的,因为CoolViewWithViewStore将在编译时生成,而且用户可能会意外地在XML中使用其类而不是我们生成的类。

我想听听是否有人对如何处理这个问题有更好的想法,或者是否有针对此的干净解决方案来实现这种架构。如果有人对如何构建我的图书馆有更好的主意,我也想听听。

1 个答案:

答案 0 :(得分:0)

使用Kotlin extension function,您可以扩展类并添加新功能,而不必继承该类。