Java 高质量代码笔记

y37f 9年前

 【】尽力编写单元测试.

  Android 一般使用 JUnit,也有很多其它不同的测试框架.

 看看单元测试的重要性:http://www.csdn.net/article/2012-04-10/2804366

Java 高质量代码笔记

【】强烈建议使用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:

  Java 高质量代码笔记

  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();   }     }