Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android中設計模式--策略模式(封裝會變化的算法部分,面向接口不針對實現)

Android中設計模式--策略模式(封裝會變化的算法部分,面向接口不針對實現)

編輯:關於Android編程

策略模式:定義了算法族,分別封裝起來,讓它們之間可以互相替換,此模式讓算法的變化獨立於使用算法的客戶。

 

理解:

把代碼中類似,但又有差異的算法部分,提取出來,定義一個借口,不同的算法來進行不同的實現,但調用算法的客戶可以進行統一的調用,因為實現了共同的借口,客戶不需要知道具體的實現,而是知道怎麼用,即針對接口編程,而不針對實現編程。

 

總結:

找出代碼中可能需要變換之處,把它們獨立出來,不要和那些不需要變化的代碼混在一起。

 

 

例子
private TextClickInterface mClickInterface; // 采用策略模式,封裝變化,實現點擊處理
(客戶)

public interface TextClickInterface{
	public void click(); // 點擊事件,執行相應動作,如:預約、求片
	public void changeText(); // 修改點擊後Text顯示效果


}
(定義接口)
(實現一)
public class YuyueText implements TextClickInterface{
	private Context context;
	private MarkInfo info; // 信息
	private TextView text; // textview
	
	public YuyueText(Context context,MarkInfo info, TextView text){
		this.context = context;
		this.info = info;
		this.text = text;
	}

	@Override
	public void click() {
		//實現預約
	}

	@Override
	public void changeText() {
		//改變字體顏色及內容
		text.setText(R.string.mark_yuyue_success);
		text.setTextColor(context.getResources().getColor(R.color.mark_font_white));
		text.setBackgroundColor(context.getResources().getColor(R.color.mark_blue_already));
		Toast.makeText(context, "已預約成功", Toast.LENGTH_SHORT).show();;
	}

}

(實現二)
public class QiupianText implements TextClickInterface{
	private Context context;
	private MarkInfo info;
	private TextView text;
	
	public QiupianText(Context context, MarkInfo info, TextView text){
		this.context = context;
		this.info = info;
		this.text = text;
	}

	@Override
	public void click() {
		// 求片邏輯
	}

	@Override
	public void changeText() {
		// 改變text顏色、文字
		text.setText(R.string.mark_qiupian_success);
		text.setTextColor(context.getResources().getColor(R.color.mark_font_white));
		text.setBackgroundColor(context.getResources().getColor(R.color.mark_blue_already));
		Toast.makeText(context, "已發送求片請求", Toast.LENGTH_SHORT).show();
	}


 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved