![](/img/trans.png)
[英]Java Design Pattern for different variation of same input to be converted into common output
[英]Common input and output statements
在我的應用程序中,我有兩個按鈕。 我正在接受輸入,並根據單擊的按鈕顯示輸出。 但是,為此,我必須在按鈕的每個OnClickListener()中編寫輸入和輸出語句。 這使代碼變得龐大。 有什么方法可以編寫常見的輸入和輸出語句。
我當前的代碼看起來像這樣。
Button1.setOnClickListener(new View.onClickListener() {
public void onClick(View arg0) {
input();
process1();
output();
}
});
Button2.setOnClickListener(new View.onClickListener() {
public void onClick(View arg1) {
input();
process2();
output();
}
});
我希望我的代碼是這樣的:
input();
Button1.setOnClickListener(new View.onClickListener() {
public void onClick(View arg0) {
process1();
}
});
Button2.setOnClickListener(new View.onClickListener() {
public void onClick(View arg1) {
process2();
}
});
output();
這可能嗎 ? 如果是,那怎么辦? 如果沒有,那為什么呢?
謝謝 !
編輯:
input()是: input = Double.parseDouble(inputString.getText().toString());
output()是: outputString.setText(String.valueOf(output));
input
和output
已double
並且已經定義。
輸出從輸入由簡單的算術計算process1()
和process2()
inputString
是EditText
, outputString
是TextView
。
不確定是否值得這樣做,但是您可以創建實現OnClickListener
的抽象類BaseListener
。 其onClick
方法如下所示:
public void onClick(View arg1)
{
input();
process();
output();
}
process()
將是一種抽象方法。
每個Button都有一個擴展BaseListener
並實現process()
的偵聽器。
例如 :
Button1.setOnClickListener(new BaseListener () {
protected void process() {
process1();
}
});
不是最好的方法,但是您可以提取一個方法:
void process(int btn) {
input();
if(btn == 1) process1();
else if (btn == 2) process2();
output();
}
並這樣稱呼:
Button1.setOnClickListener(new View.onClickListener() {
public void onClick(View arg0) {
process(1);
}
});
Button2.setOnClickListener(new View.onClickListener() {
public void onClick(View arg1) {
process(2);
}
});
這可以通過很多方式來完成……在某種程度上就是這樣。
Button1.setOnClickListener(onClickListener);
Button2.setOnClickListener(onClickListener);
View.OnClickListener onClickListener = new OnClickListener() {
@Override
public void onClick(View view) {
input();
switch (view.getId()) {
case R.id.button1:
process1();
output();
break;
case R.id.button2:
process2();
break;
}
output();
}
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.