今天:看书,看博客,收了一个外门弟子,帮助他解决任务中的问题;复盘已无需要做的东西,在等前端弄好之后demo;
单例模式的一个例子:
public class ASingleton
private static ASingleton _instance;
public static ASingleton Instance
_instance = new ASingleton();
}
这样做的意义:
使得有且仅有一个实例存在;
使这个实例在全局都可用;
特点:私有构造器(可以类比Enum的构造器)(Enum也是实现单例的一种方式)。
单例模式的潜在问题:
public Order BuildSimpleOrder(int orderId)
var order = new Order() { Id = orderId };
Logger.Instance.Log($"Built order {orderId}");
}
使用单例模式后,代码变得复杂,你不知道一个行为是某个方法得到的,还是方法中的某个单例的方法得到的,而且这个单例和此对象之间没有依赖关系。
例如上面中,有可能单例会抛出读写文件的IO异常,但在此方法中编译器不需要trycatch。
因为没有依赖关系,自然不存在依赖注入,代码变得更加晦涩难懂。
最后一点是,当使用单例模式时,必须确定这个单例在整个程序的生命周期只需要存在一个,一旦这个假设在开发中被打破,所有的使用单例的代码都需要修改。
——————————————————————————————————————————————————
Maven依赖冲突的原因和默认解决方式是什么?
当依赖A和依赖B同时依赖C,且二者需要的C的版本不同是,会引起依赖冲突。
如图:
一个依赖只会被引入一个版本,不可能同时加入同一个依赖的多个版本。
Maven默认的选择机制:
离root近的版本会被选择(将依赖理解为一个树,离树的根节点近的版本被选择)
如果距离一样,按pom文件的顺序进行选择。
解决方法:
IDEA自带了检查依赖冲突的界面;
Maven也有相应的插件:
mvn enforcer:enforce
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<rules><dependencyConvergence/></rules>
</plugin>
————————————————————————————————————————————————
异常处理中的几个最佳实践:
1.在finally中关闭需要关闭的资源
public void closeResourceInFinally() {
FileInputStream inputStream = null;
File file = new File("./tmp.txt");
inputStream = new FileInputStream(file);
// use the inputStream to read a file
} catch (FileNotFoundException e) {
if (inputStream != null) {
} catch (IOException e) {
}
(但是,在jdk1.7之后,几乎所有类似资源在try之后都会被自动关闭,所以不需要finally中进行关闭了)如图中,实现了AutoCloseble的有一千多个:
2.抛出异常的范围越确切越好,一般不要直接抛出Exception,让别人不知道你的方法可能抛出哪些异常。
3.自定义的异常要在方法前进行说明此异常的含义。
4.catch异常时,详细打出日志说明原因。
5.多个catch时注意顺序从小到大,注意IDE提示的 unreachable code
6.永远不要catch Throwable:
Throwable是所有Exception和Error的父类,Throwable有可能是JVM中的严重错误,不是需要代码解决的问题。
7.不要在catch块中打印异常再throw相同的异常,这样会导致控制台多次现实这个异常。
——————————————————————————————————————————————————
如何写一个泛型方法,及泛型方法中的extends是什么?
public static int add(int a, int b) {
}
实现整数加
public static < T extends Number > double addStaticMethod(T a, T b) {
return a.doubleValue() + b.doubleValue();
}
实现各种类型数加
——————————————————————————————————————————————————
明天:要去医院,感冒又加重了;总结面试中的知识点;
问题:开始准备面试了,心很虚
总结:无
进度:http://task.ptteng.com/zentao/project-burn-277.html
demo:1号
评论