一.在函數(shù)中不要出現(xiàn)常量,可采用定義靜態(tài)成員常量的方式.
private static final int NUM = 5;
for(int i=0;i<NUM,i++){
........
}
二.設(shè)計(jì)模式的使用:
使用的是其思想,不拘泥于具體的代碼實(shí)現(xiàn)形式.
1.工廠模式:
public static Object newInstance(){
return new Object();
}
2.單例模式:
1)餓漢式單例模式:
private static final ArrayList arraylist = new ArrayList();
2)懶漢式單例模式:
class SingleInstance{
? ? ? ? ? ?private static SingleInstance obj;
? ? ? ? ? ? private SingleInstance(){};
? ? ? ? ? ? public static SingleInstance getInstance(){
? ? ? ? ? ? ? ? ? ? ? if(obj == null){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? obj = new SingleInstance();
? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ?return obj;
? ? ? ? ? ? ? ?}
}
3)DCL(Double-Checked-Lock)單例模式:
class DclInstance{
? ? ? ? ? ? private DclInstance(){};
? ? ? ? ? ? private static DclInstance obj;
? ? ? ? ? ? public static DclInstance getInstance(){
? ? ? ? ? ? ? ? ? ? ? ? if( obj == null){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?synchronized(DclInstance.Class){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if(obj == null){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?obj = new DclInstance();
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? }
}
3.代理模式:
JDBC中連接池使用示例:
? ? ? ? public Connection getInstance() throws SQLException{
? ? ? ? ? ? ? ? Connection conn = List.remove(0);//沒取出一個(gè)元素,則將其從連接池中移除
? ? ? ? ? ? ? ? ?return new MyConnection(conn);//利用代理模式,重寫Connection類
? ? ? ? }
public class MyConnection implements Connection{
? ? ? ? ?private Connection conn;
? ? ? ? ?public MyConnection(Connection conn) {
? ? ? ? ? ? ? ? ?super();
? ? ? ? ? ? ? ? ?this.conn = conn;
? ? ? ? ?}
? ? ? ? ? @Override
? ? ? ? ? public void close() throws SQLException {
? ? ? ? ? ? ? ? ? ?linkList.add(conn);
? ? ? ? ? ? ? ? ? ?System.out.println("釋放到連接池" + linkList.size());
? ? ? ? ? ? ?}
? ? ? ? ? ?@Override
? ? ? ? ? ? ..................
}
getInstance()方法中將Connection的對(duì)象conn注入到自定義的Connection子類MyConnection中,最后返回MyConnection對(duì)象.為了使連接池中的Connection保持?jǐn)?shù)量固定與有效性,重寫Connection類,主要目的是覆蓋close()方法,其它方法暫未用到,因而沿用父類.