Android中的工廠模式(減少if-else和switch-case)
Android中的工廠模式,目的就是減少if-else和switch-case的出現,梳理程式碼的條理,使邏輯更加清晰,下面直接上程式碼:
1.首先新建一個介面,用來監聽我們的操作
public interface StrategyListenter {
/**
*
* @param context 上下文
* @param result 需要操作的資料
* @param isHandled 判斷是否進行下一步操作
*/
void execute(Context context, int result, boolean[] isHandled);
}
2.重點來了,策略工廠類
public class StrategFactory {
private List<StrategyListenter> list = new ArrayList<>();
private static StrategFactory strategFactory = new StrategFactory();
/**
* 單列模式
*
* @return
*/
public static StrategFactory init() {
return strategFactory;
}
/**
* 新增具體操作的類
*
* @param listenter
* @return
*/
public StrategFactory add(StrategyListenter listenter) {
if (listenter != null) {
list.add(listenter);
}
return this;
}
/**
* 呼叫介面進行操作
*
* @param context
* @param result 可根據實際情況進行修改
*/
public void Scheduled(Context context, int result) {
boolean[] isHandled = {false};
for (StrategyListenter listenter : this.list) {
if (isHandled[0]) {
return;
}
listenter.execute(context, result, isHandled);
}
}
}
3.在Application中宣告
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
StrategFactory strategFactory = StrategFactory.init();
strategFactory.add(new NumberOne());
strategFactory.add(new NumberTwo());
strategFactory.add(new NumberThree());
strategFactory.add(new NumberFour());
}
}
4.具體的操作類,在這裡面可以執行我們想要的操作
public class NumberOne implements StrategyListenter {
@Override
public void execute(Context context, int result, boolean[] isHandled) {
if (result >= 0 && result < 60) {
DilaogHelper.getDilaog(context, "提示資訊", "不及格");
isHandled[0] = false;
}
}
}
5.最後在MianActivity中應用
public class MainActivity extends AppCompatActivity {
private EditText ed_input;
private Button btn_submit;
private int strInputNumber;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ed_input = (EditText) findViewById(R.id.ed_input);
btn_submit = (Button) findViewById(R.id.btn_submit);
btn_submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
strInputNumber = Integer.valueOf(ed_input.getText().toString());
StrategFactory.init().Scheduled(MainActivity.this, strInputNumber);
}
});
}
}
6.自己封裝的一個對話方塊幫助類
public class DilaogHelper {
public static void getDilaog(Context context, String title, String message){
new AlertDialog.Builder(context)
.setTitle(title)
.setMessage(message)
.setPositiveButton("確定", null)
.show();
}
}
附:程式碼資源下載地址:
http://download.csdn.net/download/qq_32376365/9942966
}
相關文章
- 消除程式碼中的 if-else/switch-case
- 簡單工廠模式和抽象工廠模式模式抽象
- 設計模式之工廠模式!深入解析簡單工廠模式,工廠方法模式和抽象工廠模式設計模式抽象
- 簡單工廠模式、工廠方法模式和抽象工廠模式有何區別?模式抽象
- Optional簡化空值判斷,減少程式碼中的if-else程式碼塊
- 減少Android APK的大小99.99%AndroidAPK
- OO設計模式中的工廠模式設計模式
- 工廠模式和抽象工廠的區別是什麼?模式抽象
- 簡單工廠模式、工廠模式、抽象工廠模式比較模式抽象
- 初探工廠和策略模式模式
- 原始碼中的設計模式--工廠模式原始碼設計模式
- 一篇搞定工廠模式【簡單工廠、工廠方法模式、抽象工廠模式】模式抽象
- 設計模式-簡單工廠、工廠方法模式、抽象工廠模式設計模式抽象
- 工廠模式之簡單工廠模式模式
- C# 設計模式(1)——簡單工廠模式、工廠模式、抽象工廠模式C#設計模式抽象
- 設計模式-工廠模式二(工廠方法模式)設計模式
- 工廠模式(簡單工廠模式)快速理解模式
- 工廠模式模式
- 建立型:工廠模式-工廠方法、抽象工廠模式抽象
- 【Python設計模式】03 工廠模式:建立建立物件的工廠Python設計模式物件
- 【Java】簡單工廠模式、工廠模式、介面卡模式Java模式
- 設計模式學習(二)工廠模式——抽象工廠模式設計模式抽象
- c#中工廠模式詳解C#模式
- 【智慧工廠】智慧工廠建設如何少走彎路?
- Java 設計模式之工廠方法模式與抽象工廠模式Java設計模式抽象
- 設計模式-建立型模式-工廠模式(工廠三兄弟) TypeScript設計模式TypeScript
- Python 實現工廠模式、抽象工廠,單例模式Python模式抽象單例
- 工廠模式的函式模式函式
- 設計模式:建造者模式及在jdk中的體現,建造者模式和工廠模式區別設計模式JDK
- 建立型:工廠模式-簡單工廠模式
- java 工廠模式Java模式
- 工廠方法模式模式
- 抽象工廠模式抽象模式
- golang 工廠模式Golang模式
- 設計模式 —— 工廠模式設計模式
- 設計模式(工廠模式)設計模式
- 設計模式----工廠模式設計模式
- 【設計模式】工廠模式設計模式
- 設計模式-工廠模式設計模式