12 2018 档案
摘要:有时候、可能会编写一些退化类(degenerate classes),没有什么作用,只是用来集中实例域: 由于这种类的数据是可以直接被访问的,这些类没有提供封装(encapsulation)的功能。如果不改变API,就无法改变它的数据表示法,也无法强加任何约束条件,当域被访问时,也无法采取任何辅助的
阅读全文
摘要:通常一个AS项目中的依赖关系有三种,一是本地依赖(主要是对本地的jar包),二是模块依赖,三是远程依赖;添加这些依赖的目的在于上我们想要在项目的某一个模块中使用其中的功能,比如okttp这个网络框架库,如果我们想要在项目的app模块下使用这个库的功能,则需要在app模块的build.gradle文件
阅读全文
摘要:在实际的项目中,我们应该根据特定的需求为每个活动指定恰当的启动模式。活动的启动模式一共有四种,可以在AndroidManifest.xml中通过给<activity>标签指定android:launchMode属性来选择启动模式。下面我们来逐一介绍:(1)standard:活动的默认启动模式,在st
阅读全文
摘要:今天在学习的时候发现我对Java的匿名类理解是错误的,今天特意借鉴一篇博文来梳理这些知识点。 首先,让我们看看什么是内部类(Java 内部类,成员类,局部类,匿名类等): 根据内部类的位置不同,可将内部类分为 1. 成员内部类 2. 局部内部类 成员内部类 成员内部类的访问格式:外部类名.内部类名
阅读全文
摘要:第21条:用函数对象表示策略 有些语言支持函数指针(function pointer)、代理(delegate)、lambda表达式(lambda expression),或者支持类似的机制,允许程序把“调用特殊函数的能力”存储起来并传递这种能力。这种机制通常用于允许函数的调用者通过传入第二个函数,
阅读全文
摘要:第8条:覆盖equals时请遵守通用约定 引言:尽管Object是一个具体类,但是设计它主要是为了拓展。它所有的非final方法(equals、hashCode、toString、clone和finalize)都有明确的通用约定(general contract),因为它们被设计成是要被覆盖(ove
阅读全文
摘要:第7条:避免使用终结方法 终结方法(finalizer)通常是不可预测的,也是很危险的,一般情况下是不必要的。使用终结方法会导致行为不稳定,降低性能以及可移植性问题。 C++程序员被告知“不要把终结方法当做C++中的析构器(destructors)的对应物”。在C++中,析构器是回收一个对象所占用资
阅读全文
摘要:第1条:考虑采用静态工厂方法代替构造器 对类而言,为了让客户端获取它自身的一个实例,最常用的方法就是提供一个公有的构造器。还有一种应该被程序员重视的方法:类提供一个公有的静态工厂方法(static factory method),它只是一个返回类的实例的静态方法。下面是来自Boolean(基本类型b
阅读全文
摘要:第6条:消除过期的对象引用 当你从手工管理内存的语言(比如C或C++)转换到具有垃圾回收机制的语言的时候,程序员的工作会变得更加的容易,因为当你用完对象之后,它们会被自动回收。这很容易给你留下这样的印象,认为自己不再需要考虑内存管理的事情了。其实不然。考虑下面这个简单的栈的实现的例子: 这段程序中并
阅读全文
摘要:第5条:避免创建不必要的对象 一般来说,最好能重用的对象而不是在每次调用的时候就创建一个相同功能的新对象。重用方式既快速,又流行。如果对象是不可变的,它就始终可以被重用。 反例: 该语句每次被执行的时候都创建一个新的String实例,但这些创建对象的动作全部都是不必要的。传递给String构造器的参
阅读全文
摘要:第4条:通过私有构造器强化不可实例化的能力 问题思考:有时候,你可能需要编写只包含静态方法和静态域的类作为工具类(utility class),这样的工具类不希望被实例化,实例化对它没有任何意义。然而,在缺少显示构造器的情况下,编译器会提供一个公有的、无参的缺省构造器(default constru
阅读全文
摘要:第3条:用私有构造器或者枚举类型强化Singleton属性 Singleton指仅仅被实例化一次的类。Singleton通常会被用来本质上唯一的系统组件,比如窗口管理器或者文件系统。使类成为Singleton会使它的客户端测试变得十分困难,因为无法给Singleton替换模拟实现,除非它实现一个充当
阅读全文
摘要:第2条:遇到多个构造器参数时要考虑用构建器 思考:考虑用一个类表示包装食品外显示的营养成分标签。这些标签有几个域是必须的:每份的含量、每罐的含量以及每份的卡路里,还有超过20个可选域:总脂肪量、饱和脂肪量、转化脂肪、胆固醇、钠等等。大多数产品的某几个可选域中都会有几个非零的值。 对于这样的类,应该采
阅读全文