您的位置:首页 > 编程语言 > Java开发

【笨鸟先飞】Java重新学习日记11---创建一个类

2017-09-29 14:11 323 查看
什么时候去创建一个类?什么时候再创建一个新的类?创建类的时候,是否使用单例模式?希望运用其他类的方法时,是使用继承还是组合?什么时候使用static?

 

这些问题的回答就是“面向对象”的编程方法,“面向对象”的思维方式和“面向对象”的设计模式。

 

我们一开始学习使用java的时候,是一个类走天下。这个类应该叫做main。虽然我们会命名一个功能型名字,比如“HelloWorld”。这个类里面一定有public
static void main(String[] arg) 方法。 这个是入口类,是这次java程序的入口。

 

接着,我们会把程序都写在这个main类里面。如果,在学习java的时候,涉及到关于继承或者构造器顺序之类的,才会去创建一个其他类。 这种行为是合理的,因为本身也是一个练习程序。

 

 如果我们要实现多个练习功能放于一个java程序里呢?一个程序,具备将数字存于数组并排序;由用户输入一个字符串,然后识别其中的数字、字母、其他字符的个数;打印固定行数的杨辉三角,以及求解鸡兔同笼问题。

 

面向对象,要求每个对象有自己的物理意义,有自己的定义(参数)以及能够完成的功能(方法)。这里我们可以设定5个对象:主终端,数字排序机,字符串识别机,杨辉三角打印机,鸡兔同笼计算器。

 

而实际上面向对象的设计方法,确实就是以上5个对象。当然,你也可以一个类打天下,即将以上所有功能都以方法的形式写在,主终端(main
4000
)类中。在用户使用main的时候,用到哪个功能,你就调用这个方法。但是,我们并不推崇这种方法,我们更加推荐创建5个对象的思路。

 

创建5个对象的思路就是面向对象编程。Java作为编程语言里面,较新的一种语言,其特征是比其他语言更接近自然语言,更接近人类社会的分类方式。 于是,在真正创建类的时候,最直观的分类。

 

大部分的类都是按照名词来分类。即每个类都是一个名词,这名词对应的类具备实际物理意义,他有一些特征,他可以做一些事情,完成一些功能。在设置一个类的时候,我们应该大概知道他有些什么特征,可以做些什么事情。
这些特征就是public的变量,可以做的事情就是public的方法。

 

在创建类的时候,该类的功能应该是有强力的凝聚性,也就是从类的名字,基本就能推测这个类具备什么功能。

 

如果在设计时出现一个类,可以实现的功能,其中某几个功能在逻辑上完全没有联系,那么久应该警醒了,这个时候,多半是需要创建一个新类的。

 

反向思考,什么样的情况下,错误的创建了2个类,而最好是把这两个类融合成一个类。类的功能交互太多。2个类之间有较高比例的相互调用,且2个类权责不明。其他类在使用某个功能的时候,都无法直观推测这个功能在哪个类中。这种时候,这2各类就应该合二为一。

 

专业的讲,当两个类耦合度过高的时候,要么考虑解耦,要么考虑合并。

 

大多数情况下,类所创建的对象是有很多个的,因为在实际生活中,很少有独一无二的东西,但是在程序中,特别是顶层的模块,例如启动程序,总控程序,或者某些数据存储的类,我们希望他们只有一个对象。这种时候就要采用单例模式。每次调用程序的时候,都是使用的同一个对象。

 

这种时候就使用单例模式,单例模式创建,在学习日记6中有讲述,且大部分java书也会将。

 

继承在以前的学习日记中详细讲述过,什么样的继承叫做有意义的继承,实际,当需要使用继承的时候,是不得不使用的时候。

 

而最常用到继承的情况,还是使用组件的时候,在android编程中,程序入口就一定要继承至activity。 如果要自己写布局的类则需要继承layout。父类都是官方给的,都是牛逼程序员写好的。

 

然后在写大型程序的时候,有概率自己会写父类,写给子类继承,实际应用中,一般大型程序才用到,且会明确知道应该用继承了。所以我们使用继承的时候,只需要知道有继承这个方案,以及使用android上层组件的时候,需要使用继承即可。

 

于是,继承使用概率低而组合使用效率高。组合就是在本类中import其他类,然后创建其他类,调用其他类的方法。在程序中组合使用的概率远远大于继承,且使用的次数和地方也是远远大于继承。

 

Static是一个特殊的情况,它的优势是,使用时可以直接使用类来调用。它的物理含义就是这个特征不是对象独有,而是类共有。

 

正如之前学习,static最常见的情况是用于全局。
static还有很多套路法,比如单例模式的创建,可以使用static方法getInstace()来完成。

 

总结:创建类是根据使用需要,有具体功能的,有对应含义的具体。且也建议按行为分为更为清晰的类,确保权责清晰,方便维护和修改。而在设定类时,不要被public和private所干扰思想。在决定创建类时,我们只考虑里面有哪些public类。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: