每个专案的程序码都该这样开始

(今天这篇文章好鸡肋阿!)

比起决定要不要使用最新观念、最新套件,以下几件事情务必要注意:

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效果 之 网页快给我动起来啦

Day16-205. Isomorphic Strings

今日题目:205. Isomorphic Strings(Easy) Given two strin...

【PHP Telegram Bot】Day21 - sendPhoto:三种发送图片的方式

上传图片跟 Markdown 一样也是没看过别人怎麽写,就猜不到怎麽做的东东 sendPhoto ...

Day 14 读 Go Concurrency Patterns - Rob Pike I

本篇是看 Go Concurrency Patterns 的心得 简报网址:https://talk...

Day9-元件沟通传递(part1)

元件之所以很强大是他还有个资料传递功能,让各个元件互相沟通,今天就要来研究他到底要怎麽传资料! pr...

Day 8 - 导入 Google Fonts

昨天讲了文字使用,今天来讲讲字体。在默认情况下,Tailwind 提供了三种字体系列:font-sa...