什么是拓展?
一个类是由方法和字段
组成的,现在我要给这个类加个方法或者字段
,这就是拓展。
拓展的好处:
我是一个普通的人,只有手脚,只能走路。现在给我拓展一下吧:安装一双翅膀,
ok,那我这下牛逼了,我会飞了。
同一个道理,在代码中,将现有的类增强一下,这个类将获得额外的功能,变得牛逼起来了。
如何加呢?
- 方式1: 修改原有类的代码,随意的添加
方法或者字段
- 方式2: 通过继承的方式,让其子类添加
- 方式3: 通过装饰器
以上方式都可以实现增强现有类的功能,但是都有不少的缺点:编码麻烦,入侵现有的代码。
在kotlin中可以很方便的进行拓展,如下:
拓展方法(函数):
将一个类,添加一个方法
类名.方法名
例子:
拓展:
调用:
拓展属性
将一个类,添加一个属性
类名.属性
例子:
拓展:
调用:
关于拓展的奇思妙想
场景1
我们常常会在应用程序中,弹出个toast
,来提示用户。
我们在activity里面这样写:
Toast.makeText(this, "hello", Toast.LENGTH_SHORT).show()
我们只关注弹出的信息,这样写,最简单:
toast("hello")
ok,给activity写一个拓展函数就可以啦:
fun Activity.toast(message: CharSequence) = Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
我们常见的toast,各种dialog什么的,我们以前的java代码都能实现,
但是我们写了太多的繁琐代码,
我们可以通过拓展函数,将这些代码模板化,
变成一个简单的方法,拓展至activity
或者fragment
中,极大的简化了开发的姿势,嘿嘿。
场景2
我们常用imageview
加载图片,同样少不了一堆模板代码,
尝试用下拓展方法:
fun ImageView.load(url: String) {
Glide.with(context).load(url).into(this)
}
这样直接调用imgeview.load()方法,岂不是非常直观简单?
网友评论