(今天这篇文章好鸡肋阿!)
比起决定要不要使用最新观念、最新套件,以下几件事情务必要注意:
1.实作每个常用介面跟物件。
例如要实作一个OnClickListener——假设称它为ProjectClick,然後每个要使用OnClickListener的地方就不要直接实作OnClickListener,改实作ProjectClick。
abstract class ProjectClick implements OnClickListener{
void onClick(View v){
click(v);
}
abstract click(View v);
}
这样做的目的是...用个假设情境说明...「专案中途忽然希望:别锁着画面,但又不希望使用者连续点击、连续启动特定功能。这时候就可以修改ProjectClick,也只需要修改这一次,就可以让所有Click都有『避开连续点击』的效果。」
abstract class ProjectClick implements OnClickListener{
long lastClick = System.currentTime();//是这个函数吗?
void onClick(View v){
long thisClick = System.currentTime();
if(thisClick - lastClick > 1000)
click(v);
lastClick = thisClick;
}
abstract click(View v);
}
同样的原则也可以适用在各种Adapter、Activity、跟Fragment。
2.实作一套更新画面的机制。
例如现在Activity提供了「runOnMainUI」这个方法,那就不要每次都实作一个Runnable,而是改用一个制式的Runnable实作,假设称为UiRunner。
interface UiJob{
void job();
}
static ArrayList<UiJob> JobList = ....
class UiRunner implements Runnable{
void run(){
for(UiJob job : JobList){
job.job();
}
JobList.clear();
}
}
然後将所有更新介面的动作都做成任务,放在伫列中让这个Runner执行。(下面只用「更新TextView的动作」当范例。)
class TextJob implement UiJob{
TextView text;
String value;
TextJob(TextView t, String v){
text = t;
value = v;
JobList.add(this);
}
void job(){
text.setText(value);
}
}
未来,需要更新TextView时,只要执行TextJob的宣告即可。
new TextJob(text, string);
(以此类推,也可以用来更新ImageView或ListView。)
为什麽要这样做?
可以避免程序码中出现一堆「Runnable」的匿名物件,更可以将程序码的重用度提高。
(其实每个人都应该自己靠经验去建立自己的原则。把自己的原则拿出来分享好像怪怪的。)
<<: DAY 1:Hey! Go Design Patterns
>>: 铁人赛 Day14 -- hover效果 之 网页快给我动起来啦
今日题目:205. Isomorphic Strings(Easy) Given two strin...
上传图片跟 Markdown 一样也是没看过别人怎麽写,就猜不到怎麽做的东东 sendPhoto ...
本篇是看 Go Concurrency Patterns 的心得 简报网址:https://talk...
元件之所以很强大是他还有个资料传递功能,让各个元件互相沟通,今天就要来研究他到底要怎麽传资料! pr...
昨天讲了文字使用,今天来讲讲字体。在默认情况下,Tailwind 提供了三种字体系列:font-sa...