編輯:關於Android編程
工廠模式(Factory)是比較常見的一種模式我覺得也是一種非常容易理解的一種模式,舉個簡單的例子吧,我們小時候經常考試,每次最害怕的就是爸媽問考試試卷的分數,不同的分數我們的心情也是不一樣的。那麼我們就根據這個情況以工廠模式寫一個Java程序。
public class Factory { public static Student_test creator(String rank){ if(rank.equals("優秀")){ return new Student_Laugh(); }else{ return new Student_Cry(); } } }在這裡我們建立了一個工廠類根據該學生得到的不同成績,生成該學生不同情緒的反應類。很多人覺得我直接根據值new Student()類不就好了,是的啊這樣的邏輯沒有問題,但是如果創建Student實例時所做的初始化工作不是象賦值這樣簡單的事,我們都知道我們苦逼的分數都是由我們老師打得,是經歷了一個很長的閱卷過程,轉化起來可能是很長一段代碼,如果也寫入構造函數中,那我們的代碼很難看了(就需要Refactor重整)。
public abstract class Student { }Student的子類laugh,cry類繼承抽象類Student共同組成。
下面我們再來介紹一下抽象工廠模型,這兩個模式區別在於需要創建對象的復雜程度上。如果我們創建對象的方法變得復雜了,如上面工廠方法中是創建一個對象Student_test,如果學生還有普通不考試的狀態Student_normal,這怎麼辦呢!我們繼續上面的比方,一個家比喻成一個工廠,他們家有兩個小孩,兩個小孩還是都要去考試吧,都會有考試成績吧,但雖然是一個爸媽生的,對於分數的表現也是不一樣的吧。按照上述場景,我們在寫一個抽象工廠模型。
public abstract class Factory{ public abstract Student_normal creator(); public abstract Student_test creator(String name); } public class SimpleFactory extends Factory{ public Student_normal creator(){ ......... return new StudentA } public Student_test creator(String name){ ......... return new StudentA_laugh|cry } } public class BombFactory extends Factory{ public Student_normal creator(){ ...... return new StudentB } public Student_test creator(String name){ ...... return new StudentB_laugh|cry } } }
從上述代碼分析,我們總共有兩個抽象的creator類Student_normal和Student_test類,代表平時學生的兩種狀態,考試和不考試的狀態,而每一個抽象類模型下面又有剛說的那兩孩子,Student_normal類下面StudentA、StudentB,以此類推。那麼我們為什麼不直接建兩個工廠就好了啊,因為他們是彼此有鏈接,有關系的,,我們將共同部分封裝在抽象類中,不同部分使用子類實現。
抽象工廠模型相比普通工廠模型而言就多了一類角色[抽象工廠類],需要普通工廠類繼承抽象工廠類來實現,抽象工廠類封裝了生產商品共用的方法,普通工廠類則專門負責其單一的一類具體產品的生產。
在前面提到Android網絡收音機--使用Vitamio解碼(一)實現了播放流媒體文件,但只能播放一次,在這裡可以隨機點擊左邊的menu來播放,但Vitamio還是不是很
1.如何改變item的背景色和按下顏色 listview默認情況下,item的背景色是黑色,在用戶點擊時是黃色的。如果需要修改為自定義的背景顏色,一般情況下有三種
異步消息處理線程是指線程啟動後會進入一個無限循環,每循環一次,從內部的消息隊列裡面取出一個消息,並回調相應的消息處理函數。一般在任務常駐,比如用戶交互任務的情況下使用異步
本節引言: 上一節,我們學習了Xfermode中的三兒子:PorterDuffXfermode構造方法中的為一個參數: PorterDuf