本文最后编辑于 前,其中的内容可能需要更新。
常见的架构模式有MVP,MVC,MVVM不论是哪个架构,都有M,M就是Model(数据类)。
数据类与单例类
数据类通常要写toString(), eauals()等方法。比如java写数据类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| public class Cellphone{ String brand; double price; publi Cellphone(String brand,double price){ this.brand = brand; this.price = price; } @override public boolean equals(Object obj){ if(obj instanceof Cellphone){ Cellphone other = (Cellphone)obj; return other.brand.equals(brand) && other.price == price; } } @override public int hashCode(){ return brand.hashCode() + (int)price; } @override public String toString(){ return "Cellphone(brand="+ brand + ", price=" + price + ")"; } }
|
tips: java里面的Object ,在kotlin当中是 Any。 instanceof在kotlin中是 is
是不是感觉很长,好的,轮到kotlin了。简单到难以想象
1
| data class Cellphone(val brand:String,val price:Double)
|
结束了。就只有一句话。kotlin将那些toString,equals等等那些毫无实际逻辑的方法自动生成,大大减少工作量。仅仅需要在class前面加上data即可。’==’相当于equals,’===’就是比较哈希值看是不是同一个对象。
接下来可以测试下
1 2 3 4 5 6
| fun main(){ val cellphone1 = Cellphone("小米8",4100.0) val cellphone2 = Cellphone("小米8",4100.0) println(cellphone1) println("cellphone1 equals cellphone2 ${cellphone1 == cellphone2}") }
|
单例模式
java常见的单例模式
1 2 3 4 5 6 7 8 9 10 11 12 13
| public class Singleton{ private static Singleton instance; private Singleton(){} public synchronized static Singleton getInstance(){ if(instance == null){ instance = new Singleton(); } return instance; } public void singletonTest(){ System.out.println("singletonTest is Called."); } }
|
轮到kotlin,简单到可怕
ok了这个就是单例了,接下来添加方法
1 2 3 4 5
| object Singleton{ fun singletonTest(){ println("singletonTest is Called") } }
|
Kotlin当中不需要私有化构造函数,不用提供getInstance(),只要把class改为object关键字,单例类就创建完了。
使用:
1
| Singleton.singletonTest()
|