Java 高质量代码笔记
y37f
10年前
【】尽力编写单元测试.
Android 一般使用 JUnit,也有很多其它不同的测试框架.
看看单元测试的重要性:http://www.csdn.net/article/2012-04-10/2804366
【】强烈建议使用UTF-8编码
【】性能考虑,数组是首选
【】线程安全的单例模式
public final class DoubleCheckedSingleton { private static DoubleCheckedSingletonsingObj = null; private DoubleCheckedSingleton(){ } public static DoubleCheckedSingleton getSingleInstance(){ if(null == singObj ) { Synchronized(DoubleCheckedSingleton.class){ if(null == singObj) singObj = new DoubleCheckedSingleton(); } } return singObj; } }
另一种方式:http://www.it165.net/pro/html/201403/11212.html
package com.troy.young.thread; /** * 线程安全的单例类 * * @author Administrator * */ public class SingleTon { /** * 定义他的构造方法,让外部没有办法是用new去构造该对象 */ private SingleTon() { } /** * 定义内部类对单例进行实例化。 * 首先内部类是static的,保证了该类在内存中只有一份,同时他的成员变量是final static的,则又再次保证他的单一性。 * 同时由于JLS会保证类的线程安全。 * @author Administrator * */ private static class SingleTonHolder { public final static SingleTon instance = new SingleTon(); } /** * 提供获取实例的方法 * @return */ public static SingleTon getInstance() { // 直接获取内部类的变量 return SingleTonHolder.instance; } }
【】多线程使用 Vector 或 HashTable
【】使用枚举实现 工厂方法模式 更简洁
UML图展示 FordCar 和 BuickCar:
DEMO:
public class Test { enum CarFactory { FordCar { public Car create() { return new FordCar(); } }, BuickCar { public Car create() { return new BuickCar(); } }; public Car create1() { switch (this) { case FordCar: return new FordCar(); case ... ... default: throw new AssertionError("无效参数"); } } public abstract Car create(); } public void test() { CarFactory.BuickCar.create(); CarFactory.BuickCar.create1(); } }