text: 在計算機科學中，元物件能訪問它自己的內部結構。反射在根本上確使一個系統能現場重寫自身，在其執行時改變自己的實現。元物件協議.元物件協議。元物件協議的典型功能包括：進一步的說，元物件協議不只是到底層實現的介面，轉而，透過元物件協議，物件系統是依據元物件系統而遞迴實現的，而它自身在理論上是依據元-元物件系統來實現的，以此類推直到任意一個基礎情況被確定，協議就自身而言，是在這些實現層級之間的遞迴泛函聯絡。元物件協議對立於伯特蘭·邁耶的開閉原則，它聲稱軟體物件系統，應當“開放擴充套件”而“關閉修改”。這個原則有效的劃分了，對其做出增加的擴充套件物件，和對其重定義的修改物件之間的不同，提出前者是需要的品質。元物件協議與之相反，透明的暴露物件的內部構成，和就係統自身而言的整個物件系統。實際上，這意味著程式設計者可以使用物件來重定義自身，可能要以非常複雜的方式。以元物件協議方式實現物件系統，開放了徹底自主的重新設計的可能性，提供了深度靈活性，但介入了可能的複雜性，和難以理解的元穩定性問題，這依賴於想要的修改所傳播到的遞迴深度。由於這些原因，當元物件協議出現於一個語言之中的時候，通常被適度使用並用於特殊用途，比如以複雜方式轉換其他軟體或自身的軟體，例如在逆向工程中用到的那些軟體。執行時間和編譯時間.在於執行時間不能獲得編譯的時候，元物件協議的實現就有額外的複雜性。例如，有可能透過這種協議變更型別層級，但是這麼做可能導致，用可替代類模型定義編譯的程式碼出問題。一些環境找到了有創意的解決方法，比如透過在編譯時間處理元物件問題。一個好例子是OpenC++。語義網的面向物件模型，比多數標準物件系統更加動態，並一致於執行時間元物件協議。例如，在語義網中模型類被預期變更它們的相互關係，並有叫做分類器的一個特殊的推論引擎，可以驗證和分析演化中的類模型。用途.第一個元物件協議，是在Xerox PARC開發的面向物件程式語言Smalltalk之中的元類。隨後的Common Lisp物件系統的問題。CLOS還允許動態多方法分派，這是透過泛化函式來處理的，而非Smalltalk的單一分派中的訊息傳遞。描述Common Lisp中元物件協議的語義和實現的最有影響的圖書，是等人的《》。元物件協議還廣泛的用於軟體工程應用中。在幾乎所有的商業CASE、程式碼重構和整合開發環境中，都有某種形式的元物件協議，用來表示和操縱設計工件。元物件協議是實現面向切面程式設計的一種方式。很多MOP的早期創立者，包括，此後成為了面向切面程式設計的主要倡導者。PARC僱用了Kiczales等人，為不擁有原生元物件協議的Java設計了。
metadata: erhwenkuo/wikipedia-zhtw
metadata: 元物件
metadata: https://zh.wikipedia.org/wiki?curid=7431324