java发展趋势,让你对Javalt面向对象
java发展趋势,让你对Javalt面向对象以现代人的智慧,我们可以轻易的想到要用活字印刷术来解决需求一直变化引入的问题。“第三天,样张再次出来后,曹操细细一品,觉得不妥:‘人生真爽,太过直接,应改为人生几何才有意境!’,于是此臣再命工匠重新来过。工匠晕倒……”“话说三国时期,曹操带领百万大军攻打东吴,大军在长江赤壁驻扎,军船连城一片,眼看要灭掉东吴,统一天下,曹操大悦,于是大宴众文武,在酒席间,曹操诗兴大发,不觉吟道:‘喝酒唱歌,人生真爽,……’,众文武齐呼:‘丞相好诗!’,于是已臣子速命印刷工匠刻板印刷,以便流传天下。”“第二天,样张出来后,曹操一看不妥:‘喝与唱,此话过俗,应改为对酒当歌较好!’,此臣就命工匠重新来过。工匠眼看连夜刻版之工,彻底白费,心中叫苦不迭,只得照办。”
序 故事的由来接受过九年义务教育的,基本都知道作为四大发明之一的活字印刷术。我泱泱大国,上下五千年文化,沉淀出了多少智慧的结晶,而活字印刷究竟是有什么样魔力,可以作为其中最巅峰的四分之一
不妨先分享一个关于活字印刷的小故事,是关于我国伟大的政治家,军事家以及湿人曹操的。
“话说三国时期,曹操带领百万大军攻打东吴,大军在长江赤壁驻扎,军船连城一片,眼看要灭掉东吴,统一天下,曹操大悦,于是大宴众文武,在酒席间,曹操诗兴大发,
不觉吟道:‘喝酒唱歌,人生真爽,……’,众文武齐呼:‘丞相好诗!’,于是已臣子速命印刷工匠刻板印刷,以便流传天下。”
“第二天,样张出来后,曹操一看不妥:‘喝与唱,此话过俗,应改为对酒当歌较好!’,此臣就命工匠重新来过。工匠眼看连夜刻版之工,彻底白费,心中叫苦不迭,只得照办。”
“第三天,样张再次出来后,曹操细细一品,觉得不妥:‘人生真爽,太过直接,应改为人生几何才有意境!’,于是此臣再命工匠重新来过。工匠晕倒……”
转 面向对象以现代人的智慧,我们可以轻易的想到要用活字印刷术来解决需求一直变化引入的问题。
活字印刷很好的解决了工匠重复劳动的问题,首先,要改只需改要改之字,此为可维护;第二,这些字并不是这次用完就废弃了,完全可以在以后的印刷中重用,此为可复用;第三,此诗若要加字,只需另刻字加入即可,此为可扩展;第四,字的排列可能是横排可能是竖排,此时只需要将活字移动即可满足需求,此为灵活性好!
而软件系统想要做到可维护、可复用、可扩展、灵活性好,也可以借鉴活字印刷的思想,即把整个系统切割成一个个小的单元,每个单元都是一个完整的最小功能,各个单元之间互相不影响。比如活字印刷,每一个模块都是一个整字,不能是半个,也不能多余一个,而替换任何一个都不会对其他模块产生影响。而这,在软件系统里可以称它为“高内聚,低耦合”。而这种模块式的编程方式,我们称之为面向对象编程。
承 面向对象的准则到此为止,面向对象的编程方式还只是我们的一个愿景,而"高内聚,低耦合"也没有明确的标准。针对系统如何划分模块,模块之间如何交互等等,如果没有一个统一的准则,可能一千个人会有一千种的划分方法。
针对面向对象,目前大家公认的有这么几个准则:
- 单一职责:低耦合,强调模块功能点要单一
- 开放-封闭原则:对扩展开放,对修改关闭;
- 依赖倒置原则:即面向接口编程
- 里氏替换原则:面向接口编程的应用
- 接口隔离原则
- 迪米特原则
符合上面这几个原则设计出来的系统,基本是能满足"高内聚,低耦合"需求。
起 设计模式可能针对大部分人来说,到现在仍然无法理解如何面向对象编程。毕竟上面一套套都是理论,虚的很~非有大智慧者难以据此就编写出优雅的面向对象的代码。
而解决虚无理论最好的方式就是实践。这里的实践不是让你自己去闷头写,而是针对解决各种类型的问题,大家总结出的集中编程最佳实践---设计模式。比如,你要解决创建性问题,可以选择工厂模式,建造者模式等;你要解决结构问题,可以选择代理模式,适配器模式等。具体到每一种设计模式都有自己的应用场景。而我们要做的就是在编码前分析我们要解决的问题和应用场景,从而选择合适的设计模式。
合 框架下的面向对象现在变成大多会选择各种各样的框架,这些框架基本会包含各种各样的设计模式,尤其是Java,c 等面向对象语言的框架,而这些框架在给我们带来便利的同时,也让一些设计模式不再那么有应用场景。此处以Spring为例,Spring的IOC帮助我们提前创造单例,所以我们一些创造实例类的设计模式在这有些无用武之地,这就需要我们对设计模式的理解在框架下有所变化。比如传统的工厂模式,在Spring下我们的重点可以不是创造实例,而是选择什么样的Bean。
当然,道法术器势,越是具体的条条框框永远是最低等的一层,我们在开发的时候既要了解各种各样好的实践方法,也要适应各种变化。只要符合“高内聚,低耦合”原则,无不可破之规则。