從地鐵閃燈看抽象與穩定性

2021-07-03 07:22:22 字數 1607 閱讀 9550

首先程式屬於漸進程式設計,你永遠無法知道你現在做的事情將來會變成怎樣。這不同於建築。你就在自己的一畝三分地上面造房子,住宅,只侷限於睡覺、用餐、看電視,當然,你也可以有游泳池,但總體上,它是可**的。你可以把你所有想做的事情收羅到一塊,整理計畫,慢慢把圖紙畫出來。程式確是個多變的世界。你都不知道你做的東西下個月會變成什麼。整體規劃就成了一種費力不討好的事情。我們只能務實的實現一小個任務,然後以後的事情再去慢慢分析、考慮。既然未知可以以後考慮,那麼我們當前需求也可以分割成若干個小任務,逐一抽象疊加實現。我們不要去考慮整體把握了,因為永遠把握不住。(漸進性程式設計思維)

任何乙個功能都是從乙個看似主要的功能出發開始思考的。我們想就地鐵閃燈做乙個控制程式。首先我們確定我們要做什麼?無非告訴坐地鐵的人,我們在那裡。簡單來說,就是做個介面實現設定當前站點的功能。

function setstation($station){};

設定站點怎麼弄呢?把設定站點的燈點亮,把它還沒去過的前面的站點點亮。那麼,我們這裡就需要乙個站點的列表,以及乙個站點和燈的對應關係。為了更好的組織,採用了class

class station

static $stationligntmap = array(「上地」=>1, 「西二旗」=>2, 「」龍澤=>3);

public static function setstation($station);

我們需要控制燈的狀態,所有有setlight(燈編號,狀態(亮或者不亮));當然,這裡用clss

class light

public static function set(li

ghti

d,status){};

我們切換站的時候只需要出發呼叫station::setstation(「上地」)就好了

通過以上**我們就實現了上面的要求。

有一天,我們需要加入快到站閃爍的功能。我們只需要新增乙個正在去往某站的介面

class station

static $stationligntmap = array(「上地」=>1, 「西二旗」=>2, 「」龍澤=>3);

public static function goingto($station){}

public static function setstation($station);

然後再light裡面加入閃爍的status的新狀態,便好了

突然發現,setstation是很2的命名方式,很程式化,應該是到了某站,改為station::arrival(st

atio

n),s

tati

on::g

oing

to( station),light::set(1, 『flicker』)(閃爍)

仔細體會,應該會從中發現物件導向和抽象給我們帶來的好處。

我們這裡再來**下,這裡的變化和抽象元素的穩定性。這裡面最穩定的,無非是站點這個概念,和燈這個概念,我們一般認為在整個亮燈系統中,這兩個概念都會永垂不朽,我們把特別穩定的做成類,到站和執行中這兩個也相對穩定的。站點有可能變,比如說某一站沒開通,燈設定顯示狀態比較穩定,我們把狀態做成乙個引數,來提高它的可擴充套件性。

總體看來,穩定度和類、函式、引數,內部分裝是線性關係的,我們盡量把所有不穩定的封裝起來,使變化帶來的改變最小。這個的根本是業務抽象。

從閃迪的乙個U盤看整個行業

從閃迪的乙個u盤看整個行業.u盤注重質量,大家平常用u盤時是感覺不到 壞的.是處理晶元和儲存晶元的好壞共同決定的.儲存晶元最好是slc.相對於mlc而言.而處理晶元 主控晶元 基本已經定型,就幾個廠家生產,各個廠家在效能上沒有多大區別.前幾年 u盤大戰 中山寨u盤用低價獲得不少利益,這段時期正是u盤...

從地鐵環境出發看溫濕度感測器可以做些什麼

在日常生活中,溫濕度感測器應該是最常用的一種感測器。本篇告訴你,溫濕度感測器在地鐵環境中的應用。地鐵乘客流量大,所需新風量變化大。因此地鐵的空調負荷變化大,要實現節能必須借助於自動控制的手段。對此,在地鐵車站的站廳和站台區等公共區域,以及重要裝置房內,設定室內溫濕度 感測器,從而得以監測車站實時的溫...

學習心得 從靜態成員看類的抽象性

靜態 static 成員是c 中類的一種特殊的成員。在程式中,我們有時希望多個物件公用乙個變數,但是使用全域性變數會破壞類的封裝性。靜態成員就是為解決此問題而設計。靜態成員的作用域在整個類中,它有全域性變數的優點,又不會像全域性變數那樣破壞類的封裝性。一 靜態成員的定義 在類中,在成員函式名或者成員...