プラダの鞄をおねだりするのが参照
プラダの鞄の続きです。
元ネタは、深読みのし過ぎだった訳ですが、ネタとして引き続き。
プラダの鞄をおねだりするときには、いくつかパターンがあるので、書き上げてみます。
■この箱にプラダの鞄を入れてパターン
<001>
Prada *prada = NULL;
Lewis.Onedari( &prada );
この prada ポインタは、アリスが用意する箱です。
ルイス君に「この箱にプラダの鞄を入れてね」とお願いするわけで、後で箱の中身を確認するのが、
Prada *prada = NULL;
Lewis.Onedari( &prada );
if ( prada == null ) {
// 激怒ッ!!!
}
な訳ですね。
ここの部分、プラダの箱を直接チェックするのが「アリス」。
ルイス君が自己申告(プラダの鞄を入れたか、いれなかったか)をするパターンは次の書き方。
Prada *prada = NULL;
if ( Lewis.Onedari( &prada ) != true ) {
// 激怒ッ!!!
}
この違いは大きいですよね。
- prada をチェックするのが、アリスの場合
- prada をチェックするのが、ルイスの場合(自己申告)
という具合です。
前者の場合は、ルイスに責任はありません、というかアリスはルイスの振る舞いに疑いを持っています。
後者の場合は、ルイスの自己申告なので、実際は箱の中にプラダの鞄が入っているか分かりません。
ええ、そうなんです。
アリスが、ルイスに対してどれだけ疑いを持っているか(あるいは信じているか)にかかっています。
ちなみに、プログラマは疑い深いのでw、後者の場合でも
Prada *prada = NULL;
if ( Lewis.Onedari( &prada ) != true ) {
// 激怒ッ!!!
}
if ( prada == null ) {
// 激怒ッ!!!
}
なことをやりますねw
■プラダの箱ごと頂戴ねパターン
先のアリスは、ご丁寧にプラダの箱に鞄を入れてくれることを期待しましたが、プラダの箱ごともらうパターンもあります。
Prada *prada = Lewis.Onedari();
ルイスにおねだりをすると、プラダを箱ごとくれますね。
# 「箱」ってのはポインタなのか、メモリなのか、ってのがありますけど、この場合はメモリってことで。
これよく見ると Factory Pattern ですよね。Lewis がファクトリーで、Ondeari が Create メソッドって訳です。
Java の場合は、このファクトリパターンが多くって、C++の世界では、new演算子が多いです。ただし、この比較は正確ではなくて、
- Factory.Create の場合は、ファクトリクラスにより Create を制御できる。
- new 演算子の場合は、取得するクラスそのものだけになる。
ってことです。
具体的には、
Prada *prada1 = Lewis.Onedari();
Prada *prada2 = Nabokov.Onedari();
なところで、ルイスとナボコフにおねだりをすると、くれるのは同じプラダであっても、別のものです(あるいはプラダですらなかったりw)。
new 演算子を使う場合は、
Prada *prada = new Prada();
になるので、おねだりをするというよりも、プラダ工場から直接購入って感じになります。
というわけで、
プラダの鞄の利用許可を与える件(委譲)のパターンは、また後日ということで。
(コピー商品)→www.bag33.com←
┏バッグ
┏時計
┏財布
┏小物
貴金属など流行の商品。
高級腕時計ROLEX 、OMEGA 、CARTIER 、 BVLGARI、
ルイヴィトンコピー品販売,シャネルコピー品販売、グッチコピー品販売、エルメスコピー品販売、コーチコピー品販売、
◆ スタイルが多い、品質がよい、価格が低い、実物写真 100%品質保証!
満足保障!
経営方針: 品質を重視、納期も厳守、信用第一は当社の方針です.
広大な客を歓迎して買います!
──bag33 bag33(*^-^*)
店長:芳子
URL:http://www.bag33.com
URL:http://www.lv39.com
いや、プラダの鞄を買う話ではないのです…が、画面キャプチャ用に残しますか。