0%

在需要一个对象时,恰当的做法是尽可能重用这个对象而非创建一个功能完全一样的新对象。重用既比较快又比较流行。如果一个对象是不可变的(Item 17),那么它总是可以被重用的。

阅读全文 »

很多类都会依赖于一个或多个底层资源。比如说,拼写检查器会依赖于字典。我们常常会看
到这种类被实现为了静态辅助类(Item 4):

1
2
3
4
5
6
7
// Inappropriate use of static utility - inflexible & untestable!
public class SpellChecker {
private static final Lexicon dictionary = ...;
private SpellChecker() {} // Noninstantiable
public static boolean isValid(String word) { ... }
public static List<String> suggestions(String typo) { ... }
}
阅读全文 »

有时,你想要编写一个只包含一组静态方法和静态字段的类。这种类有一个不太好的名声,因为有些人会滥用他们,不从对象的角度来思考,而是坚信他们的想法是正确无误的 。他们可以把原生类型的值或数组相关的方法分一组,就像java.lang.Mathjava.util.Arrays的方式。还可以将静态方法划分到一起,包括工厂(Item 1),用于实现了某个接口的对象,就想java.util.Collections一样。(从Java 8开始,如果想要自己修改,那么你还可以将这类方法放到接口中)最后,还可以将针对终态类的方法划分到一起,因为你无法再将他们放到子类中了 。

阅读全文 »

单例对象是一个仅仅只会实例化一次的类。单例对象通常表示一个无状态对象,例如一个函数(Item 24)或一个本质上惟一的系统组件。使类成为单例会使测试它的客户端变得困难,因为不可能用模拟实现代替单例,除非它实现一个接口作为它的类型。

阅读全文 »

静态工厂和构造函数有一个共同的限制:它们不能很好地扩展到大量可选参数。考虑一个代表包装食品上出现的营养成分标签的类的例子。这些标签有一些必要的字段,如分量大小、每瓶容量以及每份的卡路里里数,以及超过20个可选的字段——总脂肪,饱和脂肪,反式脂肪,胆固醇,钠,等等。大多数产品只有少数几个可选字段的值为非零值。

阅读全文 »

一个类允许客户端获取他的一个实例的传统方法是提供一个公有的构造函数。除此之外,还有一个技术,每个程序员都应该掌握。就是一个类提供一个公有的静态工厂方法,这个方法就是一个简单的返回当前类一个实例的静态方法。这里有个来自于Boolean(对原生类型boolean的装箱)类内部实现的简单的例。下面的方法可以将一个原生boolean类型的值转变成一个对Boolean对象的引用:

1
2
3
public static Boolean valueOf(boolean b) {
return b ? Boolean.TRUE : Boolean.FALSE;
}
阅读全文 »

这本书的目的是帮助你高效地使用java这门编程语言和它的基本类库:java.lang , java.util, and java.io
和这些包子包下的:java.util.concurrent 和java.util.function 。其它的类库也会时不时地被讨论到。

这本书有90个小项,每一项都表达了一个准则。这些准则是由那些最优秀、最有经验的程序员总结出来的最佳实践。
这些小项松散地被分到11个章节下面,每个章节都涵盖了软件设计的一个广泛的方面。这本书不需要一页一页地读,每一项都是独立的,正正好好。
这些项目被大量交叉引用,因此您可以轻松地在书中计划自己的课程。

阅读全文 »

Spring REST API实体和DTO之间的转换

1. 概览

在本教程中,我们将处理在Spring应用程序的内部实体和被发送到客户端的外部DTO(数据传输对象)之间的转换。

2. ModelMapper

首先,让我们看看用来执行实体-DTO转换的主要类库——ModelMapper。

我们需要在pom.xml中添加这个依赖:

pom.xml
1
2
3
4
5
<dependency>
<groupId>org.modelmapper</groupId>
<artifactId>modelmapper</artifactId>
<version>2.3.1</version>
</dependency>
阅读全文 »

Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式。

markdown使用指南

标题

标题能显示出文章的结构。行首插入1-6个 # ,每增加一个 # 表示更深入层次的内容,对应到标题的深度由 1-6 阶。

H1 :# Header 1
H2 :## Header 2
H3 :### Header 3
H4 :#### Header 4
H5 :##### Header 5
H6 :###### Header 6
阅读全文 »

Idea快捷键

一、跳转

1.ctrl+Alt+[] 项目之间跳转
2.ctrl+e 最近的文件
3.ctrl+shift+e 最近编辑的文件
4.ctrl+shift+backspace 浏览修改位置的跳转
5.ctrl+shift+左箭头(win10会改变屏幕方向) 最新浏览位置的修改
6.使用书签进行跳转

1
2
3
ctrl+shift+数字或字母 标记书签  
ctrl+数字或者字母 跳转书签
shift+F11 总览书签

7.Ctrl+Up/Down 光标中转到当前界面第一行或最后一行下
8.Ctrl+[OR] 可以跑到大括号的开头与结尾
9.F2 1跳转到错误位置

阅读全文 »