摘要:
在JavaSE 8 引入了lambda表达式,lambda表达式的引入带来的好处是:通过语法上的改进,减少开发人员需要编写和维护的代码数量。这个在下面使用和不使用lambda的对比中可以清晰看出来。1.public class RunnableTest { public ... 阅读全文
随笔分类 - 编码
观察者模式【设计模式】
2015-06-12 23:06 by ttylinux, 326 阅读, 收藏, 编辑
摘要:
The observer pattern is a software design pattern in which an object, called the subject, maintains a list of its dependents, called observers, and no... 阅读全文
Large Class--过大的类--要重构的信号
2015-06-11 06:57 by ttylinux, 957 阅读, 收藏, 编辑
摘要:
如果想利用单个类做太多事情,其内往往就会出现太多实例变量。一旦如此,Duplicated Code也就接踵而至。解决方法:1.将类内彼此相关的变量,将它们放在一起。使用Extract Class手法,将彼此相关的变量提炼到新的类。2.如果1中的新类适合作为一个子类,那么可以使用Extract Sub... 阅读全文
从零开始开发一款app,所想到的
2015-06-06 18:11 by ttylinux, 275 阅读, 收藏, 编辑
摘要:
我在知乎上看到这个问题http://www.zhihu.com/question/27645587。我在阅读了各位大牛的答案后,再加上自己的思考,就有了这篇文章的内容。从零开始开发一款app,要做这些事情:1.确定编码规范---Code Style。这个可以直接参考规范https://google-... 阅读全文
重复代码Duplicated Code---要重构的信号
2015-06-01 23:07 by ttylinux, 1160 阅读, 收藏, 编辑
摘要:
什么时候需要重构,当你在项目代码里面嗅到这个味道的时候,就要进行重构。首个介绍的味道是重复代码的味道。它表现出来的特征是这些:1.一个类里面,两个函数中,含有相同的代码,类似的代码;或者三个函数中,含有相同的代码,类似的代码。这是重复代码的味道。2.两个互为兄弟的子类内含有相同的表达式。这也是重复代... 阅读全文
获取数据源数据的实现---Architecting Android
2015-05-31 16:32 by ttylinux, 417 阅读, 收藏, 编辑
摘要:
UserRepository,这个接口,描述了Repository提供给用户的功能就是getUsers,getUser(ID)。用户只管使用,其它细节无需理会。/*** Interface that represents a Repository for getting {@link User} r... 阅读全文
Java程序运行时的几个区域
2014-08-02 16:24 by ttylinux, 1418 阅读, 收藏, 编辑
摘要:
Java运行时涉及到的区域几个基本概念:1.Java对象 2.Java方法 3.一个编译好的类,以class文件的形式出现4.Java的本地方法 5.线程私有和线程共有一、方法区(永久代) 和 堆(heap) 这两个区域是线程共有的,供所有线程使用。所以,对存放在这两个地方的资源进行操作... 阅读全文
判定对象是否存活的算法----GC_ROOT算法
2014-08-02 11:34 by ttylinux, 2968 阅读, 收藏, 编辑
摘要:
要应用GC_ROOT算法,判定某个对象是否会被回收,关键是要确定root。确定root之后,你就可以根据代码绘制可达链,从而就可以进行分析了,分析哪些对象会被泄漏,哪些对象会被回收,如果GC执行的时候。 可以作为root的对象: 1.类中的静态变量,当它持有一个指向一个对象的引用时... 阅读全文
指向对象的引用置空---与内存泄漏
2014-08-02 11:06 by ttylinux, 856 阅读, 收藏, 编辑
摘要:
import java.util.Arrays;public class Stack { private static final int INIT_SIZE = 10; private Object[] datas; private int size; pu... 阅读全文
正则表达式---自己的学习杂记
2014-06-22 14:43 by ttylinux, 617 阅读, 收藏, 编辑
摘要:
先用正则表达式表达,然后,用Java语言实现。开头:这是我阅读了这篇文章http://www.jb51.net/tools/zhengze.html的过程中,想到的题目。我觉得,学习正则表达式,要多做题。我就先自己构造题目,然后,读的差不多,就做题。下述是构造的题目,然后,顺便将题目做了。排版混乱。... 阅读全文
表驱动法3
2014-05-25 14:40 by ttylinux, 263 阅读, 收藏, 编辑
摘要:
需求:编写一个子程序,打印存储在一份文件中的消息。该文件有500条消息,有20种不同类型的消息。 思路:将消息逐条读入,然后,解释该消息,看它是属于哪种类型的,然后,调用针对该类型的打印程序。如此,实现方式,有:1.要写20个if语句,来判断该消息是属于哪种类型; 然后,还需要20个打印子程序。当然,还可以采用继承的方式,写一个抽象类,该抽象类抽象了20种不同类型的消息特征,然后,具体的消息类型是... 阅读全文
表驱动法2
2014-05-24 20:47 by ttylinux, 246 阅读, 收藏, 编辑
摘要:
继续展示使用表驱动法实现的例子。 例子1: 需求:输入一个月份,和一个年份,输出该月的天数。public class DaysPerMonth { private int daysPerMonthLeapYear[] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; private int daysPerMonthNLeapYear[... 阅读全文
表驱动法1
2014-05-24 09:18 by ttylinux, 245 阅读, 收藏, 编辑
摘要:
这算是对表驱动法的内容阅读之后的总结。 需求: 读取用户输入的一个字符,如果该字符是属于字母、数字、标点符号这三类,则输出对应的提示信息(您输入的是数字,您输入的是字母,您输入的是标点符号);如果,输入的 字符非上述三类中的一种,则提示,您输入的是未知字符。 不使用表驱动法:public class NormalWay { public boolean tellPunctuation(cha... 阅读全文