>>10のコードを再更新しました。
また、約600ステップと全体像の把握が難しい規模になってきたので、自動生成した文書も公開します。

 http://play.island.ac/codepaste/code?id=1534
 http://www.h6.dion.ne.jp/~machan/tmdoc/example/Blog.book/html/

今回の変更の目的は>>10の最後で書いた「写真の重複問題」ですが、その前にちょい大きめの変更もあるので、
先にそれを説明します。
* 概念の名称「エントリ(entry)」をより具体的な「記事(aticle)」へ変更しました
* データ型検査処理(kind_of?)について、少し昔に書いた表明ライブラリ(assertion.rb)を利用するようにしました

さて本題の重複問題ですが、重複の対象は写真だけでなく、ブログ(blog)/記事(aticle)/写真(photo)で起こりえます。
そこで、重複問題の解消手段として「キーによる索引化を伴うソートされた集合」を表現する抽象クラス
Collection を定義し、その具象クラスとして記事コレクション(Aticles)と写真コレクション(Photos)を定義します。
Collectionの内部(実装)はハッシュであり、URLをキーに記事オブジェクト(Aticle)および写真オブジェクト(Photo)を
値としてURLからオブジェクトへの写像を管理しています。

また、重複の解消処理の詳細は、コレクションの生成(Collection#initialize)時およびコレクションへの
オブジェクト追加(Collection#add!)時にメソッドへ渡すブロックで指定します。これらの具体的な箇所を列挙します。
* #272: Blog#each -- 写真オブジェクトの生成
* #320: Blog#update_aticle! -- 記事オブジェクトの追加
* #352: Blog#add_photo! -- 写真オブジェクトの追加
* #451: Aticle#add_photo! -- 同上

次回の更新では、クラスの継承を検討します。これは>>17の分析で残った「分類中心設計(外延で定義)」の部分です。
なお、更新は次回で終了する予定です。