简单思考~java
1.方法论——思想论
现在流行的很多java web项目开发中使用的一些project,以及之间协同的机制方法,其实很多都在计算机系统,以及计算机网络中使用泛泛,给人以看山是山,看山不是山,看山还是山的变化感觉!
或许,刚开始,若干年以前(或者现在的新同学)我们在写一个由java实现的项目时,不知如何下手,乃至于架构师搭建好框架后,要实现某一个功能,又不知如何下手?
或许,我们听过很多java面向对象开发的一套说辞,乃至其他更多的论。
我总结的其实是自己这几年来的感悟,不仅限于java,包括其他方面,囊括的一个思考——方法论。
2.重要的两个思想:分层 、分而治之
分层:比如我们web项目开发中的分层—— ccontroller层—>service层—>dao层 ,TCP/IP的OSI七层模型,或者说四层模型,包括其他各个project在实现上的分层,比如dubbo的9层
分而治之:大数据处理中非常重要的思想。其实包括大流量处理的分库分表,削峰填谷,分布式微服务,集群等都是分而治之的部分体现。
3.抽象的艺术:抽象—可以说我们的计算机和编程语言发展到现在离不开的一个就是抽象。从简单的晶体管到组合出简单的逻辑门,到与或非,异或组成复杂的 半加器,全加器等加法器,进而延伸出内存的实现,cpu的实现等。
4.面向对象:通常说的有事找对象去做,为什么要有这么个对象,找对象去做呢?
以前我们用C的时候可能更多的是偏向过程论,在这里要说明的是,面向对象是一种思想,并不是java独有。我们用其他语言也可以实现面向对象的开发。
如果我们要开发,要做一个东西,那一定要有这么一个轮廓:它里面都有什么,都有哪些组件,最好能有一个简单的UML图,那每个组件都是实现什么功能,每个功能的实现步骤都是怎样的,有这么一个思路的话,那进一步,某个功能需要哪些组件(对象),这些组件(对象)里面都有那些作用(行为),对于每一个project的组件,或者说每个project组件中的功能的组件(对象),组件(对象)里的那些作用(行为),我么可以先去定义它的名称,再去实现它的细节底层,也可以称为由顶至下的开发。
举个最简单的栗子:
要写一个实现汽车从停止到跑动的动作,或者说方法,那我们可以这样实现:
伪表述:
public class Driver{
public boolean run(Car car){
fire(car); //1.点火
..... //2.挂档
..... //3.握方向盘-踩油门
....... //4.监控驾驶 (单开线程)
return true;//标志跑动成功
}
}
先定义出这些步骤,具体的实现再去做,然后发现前期没有考虑到的,公共之处,进行抽出,或者发现某些问题需要解决,使用各种设计模式进行重构解决,每个project的产生,一般都不会是一蹴而就的,会是一个又一个重构的过程。我们需要去思考这些,然后在实际中养成这种习惯和思想,具备这样的能力,那可能某些问题将不再是问题。