軟件系統中常見的資源有內存、文件句柄、數據庫會話、線程、服務等,資源管理是資源使用者對資源進行有效控制的過程。資源管理的設計每每影響軟件的非功能性需求:html
性能:軟件系統中操做每每涉及不少資源,如何保證資源可用、避免浪費、高效獲取。算法
可擴展:如何設計資源管理架構保證向上、向下兼容。數據庫
可預測:如何保證資源操做的時間是能夠預期的。數據結構
靈活性:如何設計保證系統易於定製和配置。架構
穩定性:如何設計保證資源的頻繁操做不會致使系統的不穩定。數據結構和算法
一致性:如何設計保證系統處於一致的狀態。性能
軟件系統的設計每每須要考慮以上多個方面,而某些方面自己是互相矛盾的,好比靈活性和性能自己可能衝突(分層架構設計),針對實際的問題在不一樣的影響之間找到一個合適的平衡是設計的目標。線程
要使用資源可能首先要找到資源,如何查找到資源而且系統靈活、高效是設計的主要目標。架構設計
如http://www.cnblogs.com/chencheng/p/3290370.html所示的一個組件系統。平臺爲上層應用提供組件服務,組件自己可能增長、刪除,上層應用須要高效的查找到組件資源而且使用。咱們可能有下面幾種設計方式:設計
咱們能夠看到設計三相似一箇中介者模式,在現實生活中就類型一個房屋中介結構,房主在中介登記,有人須要租房直接到中介那裏去查詢房屋信息。若是沒有中介機構挨家挨戶的去詢問將是多麼痛苦的事情。