2009年2月26日木曜日

Acquisition

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
関係あるようだ。Five(移行用レイヤ、おそらく2+3だから)の中でこんなのがある。

src/Products/Five/bbb.py:22:class AcquisitionBBB(object):
src/Products/Five/bbb.py:23: """Emulate a class implementing Acquisition.interfaces.IAcquirer and
src/Products/Five/bbb.py:24: IAcquisitionWrapper.


Acquisition @ zope.org

The concept is simple: if a named object is not found as an attribute of the object you're searching, its containers are searched until the object is found. In this way, acquisition can add behavior to objects.


Re:Zopeはすばらしいですmojixってあのzopeジャンキー日記のmojixさんでしょうね。

Environment Acquisitionのページ
http://www.ccs.neu.edu/home/lorenz/research/acquisition/
には、誕生からZopeにいたる経緯が書いてあって、

1. コンセプトがOOPSLA '96で発表
2. 似たものをDavid AscherがPythonで実装
3. Jim FultonがPythonで実装(これがZopeに入る)

といった流れをたどったようです。

つまり環境獲得(Environment Acquisition)は、
もともと学術的な、OO好きの人にはたまらないようなところから出てきて、
それがPythonで実装されてZopeに入り、すごく実用的なものになった、という経緯なわけで、
興味深いと思います。

環境獲得について、David Asherは
「インスタンスが、継承(is-a)関係だけでなく、包含(has-a)関係によっても、親から属性を得られるようにする」
といった説明をしています。

これがZopeでは、上位ディレクトリで共通ヘッダやフッタなどを定義しておけば、その配下にあるすべてのディレクトリでそれを共有できる、といったかかたちで実現されているわけです。


mojixさんの/.Jの日記をさしていると思われる、誰かのメモのgoogleのキャッシュ


Environmental Acquisition

件の烈さんの資料より

トラバーサルは柔軟にオブジェクト間の関係を定義でき、
「獲得」と呼ばれるトリックも!

この説明では駄目すぎる。

練習問題としてよさそう。
[plone-users 1185] Zope 管理者と Plone 管理者の分離について


Zope活用例

これらの各エリアは、WebNationの場合と同様、それぞれ独立のZopeオブジェクトとして実装されていると思われます。「acquisition (獲得)」の仕組みにより、深い階層のページでも、最上位ディレクトリにある要素を自動的に継承して用いることができます。


オブジェクト・パブリッシング・システムなんです (スコア:2, 参考になる)

ディレクトリ階層のように見せているのは、実はZopeの名前空間でもあり、クラスや継承、逆継承(?)acquisitionなどをサポートしてます。


名前空間をmappingしているという観点ではapacheのLocationも同じだなぁ。

「逆継承」よりも、CSSで上位のelementのstyleが下位のelementに適用されるinheritanceのほうが近いだろう。element型としての継承関係に由来しているわけではないのだから。inheritするという性質は継承からきているかもしれないが、inheritされる値はacquisitionといったほうが近いだろう。

そういうわけで、__of__なのはしっくりきた。

0 件のコメント: