|
英文原文:How Would You Build Up a City from Components?
為什么越來越多的企業應用開發正在轉向組件框架和解決方案?組件架構是否有前途?我相信答案是肯定的,而且很快所有開發框架都將會是基于組件的——這是近在眼前的事情。下面讓我來向你揭示這一切的原因。
你怎么來建設你的房子?一般你會從砌塊開始。我們可以將構建Web應用與構建你的鄉間小屋進行對比。你能夠快速構建一個非常好看的應用,而且它具有所有必需的功能。同樣,在你的房子里面,每一間房間都是針對具體的需求來創建的,例如廚房、起居室、臥室或浴室。房子的布局使你能夠通過走廊和樓梯很方便地在房間之間移動。
現在你能夠做得更好,而且能夠承擔建設一座更大更好的房子的投入——你也許希望擁有桑拿房、游泳池、影院以及一座滿是爬行動物的巨大的水族館?。但要想改變房子的設計卻是件非常困難的事情。若要添加額外的設施,房子最終看起來也許就不那么漂亮了。此外,由于你添加的這些設施必須放在不太方便的位置,它們也會影響房子使用的便利性,例如你必須穿過主臥室才能進入臺球室。
最后,你那漂亮又整潔的房子將擁有一堆不同的功能,但它會變得笨拙又不舒適。同樣的道理也適用于應用開發。
問題是,有沒有可能設計一款應用,能夠根據你的需求成長和改變?
組件是應用的積木式構件
組件是擴展應用功能的首要方法。創建組件的過程,與基于組件創建應用的過程<a name="_GoBack">有一些差異。組件不止應該提供有用的功能,還應該從一開始就設計成可復用的。
組件復用
組件應該采用松耦合方式設計以便于復用。為實現這一目標,不同的框架往往基于觀察者模式實現其事件模型。該模式允許多個接收者訂閱同一事件。
觀察者模式的實現最早出現在Smalltalk中。Smalltalk是一個基于MVC的用戶界面框架,現在它已經成為MVC框架的關鍵部分。我希望你能注意到,自Java 1.0版本起,觀察者模式就已經在Java中存在。下面讓我們深入了解它。
下面的UML圖展現了觀察者模式:
以下則是一段基本的Java實現:
public class ObservableX extends Observable { ... public void setAmount(double amount) { this.amount = amount; super.setChanged(); super.notifyObservers();}} public class ObserverA implements Observer { public void public void update(Observable o) { // gets updated amount}} public class ObserverB implements Observer { public void public void update(Observable o) { // gets updated amount}}//instantiate concrete observableXObservableX observableX = new ObservableX();//somewhere in codeobservableX.addObserver(new ObserverA());observableX.addObserver(new ObserverB());//much laterobservableX.setAmount(amount);
it知識庫:如何從組件開始構建一座城市?,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。