"轻快的JAVA"-读书笔记

轻快的JAVA封面        最近在读<轻快的JAVA>,----BETTER,FASTER,LIGHTER JAVA---.光听名字就够诱惑的了, 看了之后更是产生强烈共鸣,面对大量的 "企业级" 应用框架和铺天盖地的解决方案,以及根圣经一样厚的设计模式,我这个java初学者有点头晕了. 看了本书之后,觉得自己以前貌似走了一些弯路,一味地追求技术,反而忽略了JAVA语言本身,下面是一些读书笔记, 写下来时刻提醒自己!

       第三章中提到一个观点---"将框架分层",作者说道:

       "分层的基础只有几种不同的类型:

                                           

  •  抽象层:抽象层为它的用户展现了较为简单的接口.外观层也是个抽象层
  • 应用层:执行应用程序指定的工作
  • 服务层:类似与应用层,但他们提供了供许多应用程序使用的共有服务.服务层与应用层之间的界限是很模糊 的

如果专注于构建良好的接口,会让你的层次更有效率.对于优良接口,还是有些基本原则的:

  • 完整的:应该能够通过接口来使用层次的每个功能
  • 紧密的:别让接口出现不必要的重复,当你有重复时,出错的几率更高.
  • 方便的
  • 坚固的:接口应该能够防止误用.如果一个null值会破坏你的代码,应该要抛出恰当的异常
  • 一致性和可预测性:接口应该标准化,并且以相同的方式执行类似的工作
  • 包装精良的:通常,几个小的,较专注的接口将比一个大包的接口要好     

Java应用程序应该有哪些层?

  • 业务领域模型层:服务与接口的构建都是围绕该层来对模型进行持久化,显示,通知与操作
  • 数据访问:
  • 通信;(webservice xml等)
  • 外观层:是业务模型的主要客户.目标是要提供高级的接口.在加入外观层之前,必须要了解他提供的价值.
  • 用户接口 : (MVC)        

重构以降低耦合:要消除微耦合和巨耦合,下面是他们的一些表现形式

微耦合:

       1. 直接访问:        当你直接调用其他类上的方法或访问他的成员变量时,你就是把他们耦合在了一起.解耦通常的做法是插入某种类型的媒介 . 要记得接口对解耦是无用的,除非他们是成对出现factory的.下面的代码:

                       MyInterface myinterface = new MyObject();

不会比下面这行好到那里去:

                     MyObject myinterface = new MyObject();

只有下面这样才能完全解耦:

                   MyInterface myinterface = MyFactory.getObject();

2.继承:

          要分清什么时候使用 implementation , 什么时候使用 interface

3.可传递的耦合:

        若A与B耦合,B与C耦合,则A与C耦合.这种耦合通常是无害的,但很可能导致失控.你在处理嵌套时会特别痛苦,如:

          store.getAddress().getCountry().getState().getCity()

巨耦合

1.通信模型:

2.外观层:外观层并没有降低耦合,而是将耦合转移到较不固定的地方,不过,外观模式还是有诸多优点的.

3.共享数据:不管是使用缓冲区还是参数列表,问题是一样的,下面策略可以减少共享数据的两个子系统间的耦合:

   容许选择性的参数

   使用KEY-VALUE对

4.数据库:(嘿嘿,这个有很多优秀的框架支持,就不说了....)

5.配置:越来越多的框架使用配置来将系统解耦.

(待续...ING...)

我在阅读过程中的思考痕迹:

1.应用程序本来就是一系列类相互调用而形成的,如果为了解耦而让每个类与其factory同时出现,岂不是让应用规模大了一倍?!!什么时候要解耦,什么时候可以忽略耦合...?!

2.EJB曾经让我很苦恼,因为每一个应用服务都要求配套有四个接口和一个实现类....那么..为什么要使用如此丑陋的框架?为什么有那么多人在疯狂地追捧着EJB?! 为什么一提到企业级应用就想到EJB?!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值