單例設(shè)計模板
1.私有化所有的構(gòu)造方法 不讓外部自己創(chuàng)建
2.給外部提供一個靜態(tài)方法 獲取當前類的一個對象
3.必須定義一個靜態(tài)成員變量來保存當前類的唯一一個對象
4.創(chuàng)建對象:
餓漢式
在定義靜態(tài)成員變量時,直接創(chuàng)建當前類的一個對象 進行賦值
private static HttpOperation instance = new HttpOperation();
餓漢式的對象不需要擔心線程問題
懶漢式
public class HttpOperation {
private static HttpOperation instance;
private HttpOperation(){
}
public static HttpOperation getInstance(){
//判斷對象是否有值
if(instance == null) {
//加鎖
synchronized (HttpOperation.class) {
if (instance == null) {
//創(chuàng)建一個對象
instance = new HttpOperation();
}
}
}
return instance;
}
}
懶漢式相對于餓漢式更為麻煩 需要設(shè)計加鎖步驟赏壹,防止創(chuàng)建重復(fù)的對象轴踱。
抽象類實現(xiàn)模板設(shè)計模式
public abstract class Activity {
private String className;
public Activity(){
//子類必須實現(xiàn)的方法
onCreate();
//可以選擇實現(xiàn)的方法
onStart();
onResume();
onPause();
onStop();
onDestroy();
}
//界面布局
public abstract void onCreate();
//開始啟動
public void onStart(){
}
//界面顯示出來 可以交互了
public void onResume(){
}
//暫停
public void onPause(){
}
//已經(jīng)停止
public void onStop(){
}
//銷毀
public void onDestroy(){
}
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
}
模板里面定義執(zhí)行的過程 (有些功能自己可以實現(xiàn)誉裆,有些必須子類實現(xiàn))
1.抽象類使用abstract修飾
2.抽象類不能被實例化 不能使用Activity ad = new Activity();
3.抽象類里面可以定義成員變量方法 抽象方法必須使用abstract修飾 而且不能實現(xiàn)只能被子類實現(xiàn)
4.子類繼承與抽象類:
子類實現(xiàn)抽象類里面的抽象方法觅赊,如果不想實現(xiàn)龙助,也可以將自己變成抽象類蔗坯。
子類繼承:
public class MainActivity extends Activity {
//抽象方法必須實現(xiàn)
@Override
public void onCreate() {
System.out.println("創(chuàng)建首頁界面");
}
//子類可以重寫父類方法
@Override
public void onResume() {
System.out.println("界面啟動了康震,開始交互");
}
}