前些日子问了透明一个天真的问题,透明亲自授道解惑后受宠若惊。SICP这本书我也买了好久了,只不过刚刚看到第二章。正所谓:书非借不能读也。其实我还准备问"那么是否可以把所有Stateful的过程形式化的转变为Stateless的过程",又觉得这个问题太大了,下面就谈一点自己这方面的体会。
再论语法糖这篇Blog的现实意义是什么呢?就是尽量避免写出Stateful的代码,因为Stateless的代码最不容易出错,便于测试,维护成本低,而且更加容易抽象。在实践中可以发现,大部分过程都可以是Stateless的。
- 每次声明一个Setter方法时都要拷问自己,是否会使对象变得Stateful,付出这样的代价是否值得,能否通过Constructor注入。如果对象创建以后没有这个属性,这个对象存在是否有意义。
其实Sping在这方面没有做出好榜样,他鼓励setter注入的方式注定了这个class是Stateful的。Martin Follower 也提过这个问题,鼓励大家通过Constructor注入。
- 再进一步,可以问问自己是否连Constructor都可以不要,直接在方法中传入。举个实际中的例子,一个分页类:
1)Stateful的分页类
public class PageNavigator {
private int perPage; // 每页能够显示几项,通过实例变量避免重复传入这个值。
public PageNavigator(int num) {
perPage = num;
}
/**
* 返回第pageNum页的数据
* @param pageNum 第几页
* @param data 数据集
* @return 第pageNum页的数据
*/
public List getPage(int pageNum, DataSet data){
return data.getResultSet(pageNum*perPage, pageNum*(perPage+1));
}
}
2)另外一种实现就可以避免Stateful的出现
public class PageNavigator {
/**
* 返回第pageNum页的数据
* @param pageNum 第几页
* @param data 数据集
* @param perPage 每页显示几行
* @return 第pageNum页的数据
*/
public List getPage(int pageNum, DataSet data, int perPage){
return data.getResultSet(pageNum*perPage, pageNum*(perPage+1));
}
}
那会有人问,如果采用第二种实现,每次调用都要perPage参数,如果每次perPage的值都一样,岂不是要重复很多次?很简单,再写一个方法就是了,比如每页显示20行的调用发生了许多次:
private static final int PER_PAGE = 20;
public List getPage(int pageNum, DataSet data){
return getPage(pageNum,data, PER_PAGE);
}
再举一个实际的例子,Struts 的Action需要程序员考虑线程安全,而WebWork的不用,就是因为每次请求过程WebWork创建了一个新的Action实例,虽然这个实例不是Stateless的,但是对于每一次Web调用,它确实是Stateless的。
相关推荐
论语中学的概念和意义.pdf
浅谈《论语》“里仁”篇中的仁学思想及现实意义.doc
《论语》是中国古代儒家学派的经典著作之一,由孔子的弟子及其再传弟子编撰而成。...在现代社会,重新审视和学习《论语》中的思想,对提升个人文化素养、指导现代人际关系和治国理政仍然具有重要的现实意义。
从给定的文件信息来看,我们讨论的主题是《论语》,这是孔子及其弟子言行的记录,被誉为几千年前关于做人的智慧之书。以下是从标题、描述、标签以及部分内文中提炼出的关键知识点。 ### 关键知识点 #### 1. 孔子与...
《论语》由孔子的弟子及再传弟子编纂而成,成书于战国时期,对后世产生了深远的影响。 ### 知识点二:“论语别裁”的含义 “论语别裁”通常指的是对《论语》进行独特的解读或评论。这种解读往往结合了作者或评论者...
君子内涵的演变——从左传到论语 摘要:本文探讨了“君子”一词的演变过程,从《左传》到《论语》的阐述中,探索“君子”内涵的演变过程和历史原因。通过对《左传》和《论语》的深入分析,探讨“君子”一词...现实意义
《论语》是中国古代思想家孔子的弟子及其再传弟子记录孔子及其弟子言行的书籍,共分为20篇,其中包括了众多的章句,每一句都包含了深厚的哲学思想和生活智慧。了解《论语》能够帮助人们理解中国古代的伦理道德、政治...
3. 内涵理解的肤浅:一些解读仅凭个人情感或现实需求,对《论语》的内涵进行片面解读,缺乏系统性和深度,可能导致对《论语》精神的曲解。 在解读《论语》时,我们应关注以下几个关键点: 1. 孔子的教育家身份:...
### 《论语与算盘》关键知识点解析 #### 一、涩泽荣一与“义利合一”理念 - **涩泽荣一**:被誉为“日本商业之父”,是日本近代工商业发展的核心人物之一。他提倡的“义利合一”理念,将儒家道德与商业实践相结合...
《傅杰的复旦论语课》是一套深入解析孔子及其弟子言行的教育资源,由知名学者傅杰在复旦大学授课时录制而成。这196讲的课程不仅包含了视频形式的教学,还有配套的讲稿,旨在全面系统地传授《论语》的精髓,帮助学习...
王国维的观点认为,考古学路径强调的“可信”是理解的基础,而历史哲学路径追求的“可爱”则是诠释的生动性和现实意义。理想的诠释应当兼顾两者,以“可信”为基础,以“可爱”为追求,使经典既能保持其历史的真实性...
然而,孝道的内在价值仍有其现实意义,论文可能会讨论如何在现代社会中继承和发扬孝道。 6. 国际视野下的孝道:在全球化的背景下,孝道思想如何与其他文化中的道德观念相互影响,以及如何在跨文化交流中传播和理解...
(精简版)论语拼音 注解的很好 学习的时候很用
《论语》是中国古代儒家经典之一,主要记载了孔子及其弟子的言行,是研究儒家哲学、伦理、教育等思想的重要文献。以下是对《论语》常考知识点的详细解析: 一、文学常识 《论语》是儒家“四书”之一,与《大学》、...
《论语》作为儒家经典著作之一,记录了孔子及其弟子的言行,对中国文化和哲学产生了深远的影响。以下是对《论语》部分章节的解读与分析: ### 标题解析 **论语全文翻译** 这一标题表明文章的主要内容是对《论语》...
《论语》是中国古代儒家经典之一,由孔子的弟子及再传弟子编纂,记录了孔子及其弟子的言行,蕴含着丰富的哲学思想、道德观念和社会伦理。在制作关于《论语》文化的PPT模板时,我们可以围绕以下几个核心知识点展开: ...
《论语》是儒家经典著作之一,由孔子的弟子及再传弟子编纂,记录了孔子及其弟子的言行,集中体现了孔子的哲学思想,特别是“仁”这一核心概念。在这个压缩包文件中,我们主要探讨的是《论语》中“仁”的分类及其深远...
《论语》由孔子的弟子及其再传弟子编纂,记录了孔子及其门徒的言论和讨论,是研究孔子思想的重要文献。 教学过程中,教师通常会采用诵读法,通过反复诵读帮助学生感受文章的韵味和大意。此外,串讲法也会被用来解释...
[ConfucianAnalects论语]《论语》是中国经典著作之一,收集了孔子(公元前551-479)的教学和主张。本iPhone程序包含英文,中文简体,中文繁体。用户可对比阅读。孔子是中国最伟大的思想家和教育家。几千年来,他的...
《论语》十二章.ppt