使用 Google Gmail 所提供 Web 版的郵件處理介面,有個挺特別的功能: Label
基本的觀念在於,所有接收的信件全部集中放在 “郵件匣”,並不需要另外建立 folder 來分門別類存放郵件,而是將欲分類的郵件 “貼上” 標籤(Label),標示它是屬於某某類別。
這很方便,因為一封實體的郵件可以被 “貼” 上多個標籤,同時代表它屬於一至多個種類。
而如 Outlook 等其他郵件軟體,則是以實體的 “folder” 來存放郵件。正好反映了兩種設計的思維:實體與虛化的設計。
同樣地設計應用,沒想到我又在 Apple 的 iTunes 看到了,打開 iTuine,第一個動作即在於載入位於實體檔案各處的音樂檔(如 mp3),載入後集中 “儲存(其實只是 index)” 在一個 universal database 內。
一開始很不習慣,因為使用 media player 久了,一般當你載入音樂檔所在的 folder 時,即會以該 folder 的名稱作為類別名稱,方便你選擇播放。
但 iTunes,則是讓你自行 “create” 新的標籤,然後再把你想設定為該標籤的音樂檔 “拉” 進該 Label,該 Label 就成為目錄的名稱。
所以,你可以依你的喜好來對 Label 命名,例如以 歌手、曲風、最喜歡的歌曲…等,每個 Label 可以設定你所喜歡的播放方式。甚至,iTune 還幫你預設好如 “派對隨選的播放”,也就是該 Label 可以隨機播放位於資料庫的歌曲。
以實體 Folder 作為群組的單位是一種設計;而使用邏輯虛化的 Label 作為群組的單位又是另一種設計。將實體與虛擬分開來,一個簡單的觀念,但卻能使應用的彈性提升更大。
舉一個例子,國內某知名購物網站 PX-HOME,它的購物系統實在是不可思議的 ~ 差勁。
昨天我買了三個商品:三個懷爐、一組懷爐用的精油、一套華康字型軟體。
竟然,要重覆購物三次,要刷三次卡 @!#!
看了該網站客服的 FAQ,理由竟然說因為貨源是不同的廠商所提供,所以使得線上購物的商品必須一件一件個別購買。
這什麼跟什麼? 明明就是購物系統的設計非常明顯有問題! 不懂得將虛的設計與實體的貨源抽離出來。
再來,還有一個,我從來不認同 Java 以實體的檔案結構作為 package 的分類依據是理想的。原來 Java 設計小組應該是考量到 “結構化” 的配置問題,只是其實做卻是以實體的檔案結構來作為 “結構化” 的分類依據。這是一種 “bad design”,使得開發人員做如 “Deploy” 的工作是一件辛苦的事。
相較於 .NET,它反而是以虛化邏輯的 “name space” 來作為程式碼的分類,而不用考量程式碼的實際儲存位置。這點則來得有彈性的多了。
懂得將 “虛” 的觀念應用在設計中,往往僅是多那麼一點簡單的創意,實際不需花上額外開發的時間。但所造成的效果,卻可以是更加地便利、更來得有彈性。
Hi 哈利波英:
生活周遭有太多的現象值得我們來觀察,保持高度的好奇心並隨時反思。
有許多心得及體會會很容易帶入軟體設計的思維囉 ~_^
矇矇兄:
你這篇文章的見解很有趣,讓我以後在接觸軟體或系統時,不會再只看source code而已,更會多注意其設計架構…^^v 軟體也是一種設計之美ㄋ~~
哈哈~~
真是不錯的見解,對我很有幫助喔