cfアマゾン検索
1年前にも作った「cfアマゾン検索」ですが、今回作ったサイトはこちらです。
以前のサイトと今回の違いは以下のとおりです。
- Amazon Webサービスのバージョンを3.0から4.0に変更
- オブジェクト指向を取り入れた
- メール配信追加
- 携帯用サイトも作成
Amazon Webサービスのバージョンを3.0から4.0に変更
最新のバージョンで作ってみたかったということが大きいです。最新のバージョンではカート機能などいろいろとありますが、今回使用したのは、
Operation=ItemSearch
だけです。
オブジェクト指向を取り入れた
本などのカテゴリによっては、検索条件や表示内容が違う場合があります。今までのプログラムでは、カテゴリ条件に応じてif文などが多用されると思います。
検索項目表示部分では、
<cfif kbn eq "Books"> 〜 <cfelseif kbn eq "ForeignBooks"> 〜 .... </cfif>
となります(cfswitchでもよい)。
また、メール配信する際は、メールのあて先がそれぞれ違います。今までのやり方であれば上記のように、またif文を書かないといけないです。
アマゾンがカテゴリを追加しないのであれば、今までのようにif文使ってもよいでしょう。でも、アマゾンがカテゴリを追加する可能性もあります。その場合は、カテゴリ別のif文を検索しなおして、その部分に追加修正する必要があります。
プログラムの管理やメンテナンスが面倒になります。
そこでオブジェクト指向として、以下のように考えました。
きちんと考えるといろいろあるでしょうが、単純に考えて、
- カテゴリの基本となるオブジェクトをitem.cfcとして作成
- それぞれのカテゴリは、Books.cfcなどitem.cfcを継承して作成
カテゴリで共通の関数やデータは、item.cfcに記述し、共通でないものは、それぞれBooks.cfcに記述する。
そうすることによって、カテゴリ別の管理がしやすくなります。
また、オブジェクト指向のよい点は、以下のような記述ができます。
<cfset searchObj = CreateObject("component", "Books").init()> <cfset a = searchObj.getSearchURL()> <cfset searchObj = CreateObject("component", "Kitchen").init()> <cfset b = searchObj.getSearchURL()>
変数a,bの値は、それぞれBooks用Kitchen用となります。
if文を使わずプログラムもシンプルに記述できます。
オブジェクト指向については以下の本がよいでしょう。
まるごと図解 最新オブジェクト指向がわかる