服務擴展點(service point)和配置擴展點(configuration point)沒有直接的聯繫,所以服務和配置同名也是很常見的(這種同名可能是有意的或無意的;服務和配置擴展點使用的是不同的命名空間)。服務和配置擴展點的聯繫只有在代碼裏面才能體現,服務關聯了一個配置之後就可以隨意操作它裏面的所有元素。
現在,HiveMind裏的配置擴展點可以是配置的數據是一個不可修改的List或一個不可修改的Map。區別這兩種模式的方法是通過指定關鍵屬性來區別,如果指定關鍵屬性則會使用這個屬性最爲主鍵。
在系統啓動的時候配置擴展點的數據是不會生成的,在第一次引用配置擴展點的數據(List或Map)時纔會生成一個實際數據的代理。生成的代理結構和單例模式的代理模式很像,也分爲內外兩層。當實際訪問時內層代理會改變外層代理的內層代理屬性,使其指向實際的數據。和單例模式不同的是,配置擴展點生成的代理不是動態代碼生成的,而是一個已經編寫好的類。不動態生成的原因可能是因爲此處的代理只需要涉及List和Map兩種固定的類型,不需要根據運行時的情況動態的獲取類類型併爲其生成代理。下圖展示了代理的類結構。