【WPF】Metro.cs#2に行ってくるぞー!
- 2016.06.29 Wednesday
- 20:03
いまさらな感じですが、最近はWPFと戯れてます。
あとFriendlyを使って、プロダクトでは絶対やってはいけないような事を率先してやってます。
テストプログラミングって自由だな〜!Friendly最高だな〜!素敵すぎますね!
あと、最近ようやくAWSやAzureといったクラウド関連に触手が伸ばせるようになりました。
サーバレスアーキテクチャ!なんだろそれ!うまいだろきっと!
AWS LambdaやAzure Functionおぼえよ!って鼻息荒くしてます!面白そうだ〜。
.NET Framework 4.5.2のTextBoxやComboBoxには
タッチでマジ使えんレベルのバグが仕込まれていましたが、
.NET Framework 4.6で修正されたっポイ。
と、信じてますよ!
GOFのデザインパターンを勉強しなおそうと思いまして、とりあえず現状の知識レベルがどの程度か把握するためにテストを作成しまいた。
問1 以下、のGOFデザインパターンを簡単に説明せよ。
Abstract Factory
Adapter
Bridge
Builder
Chain of Responsibility
Command
Composite
Decorator
Facade
Factory Method
Flyweight
Interpreter
Iterator
Mediator
Memento
Observer
Prototype
Proxy
Singleton
State
Strategy
Template Method
Visitor
回答
Abstract Factory
具体的な生成は具象クラスが提供するが、利用者は共通のインスタンス生成を保証するパターン。
Adapter
異なる型同士を中継するアダプターを提供するパターン。
Bridge
特定のロジックだけを抜き出し、再利用するパターン。
Builder
複数の型が関連する複雑なインスタンス生成するパターン。
Chain of Responsibility
状態をリポジトリに保存・取得するパターン。
Command
複数のロジックを共通の実行形式にするパターン。
Composite
再帰的な構造をとるパターン。
Decorator
インスタンスを特定の状態にするパターン。
Facade
システムの呼び出し口を一つにするパターン。
Factory Method
・・・。いつも忘れる。
Flyweight
なんだっけ(笑)
Interpreter
こんなのあったけ(笑)
Iterator
コレクションの列挙する構造を提供するパターン。
Mediator
こんなのあったけ(笑)
Memento
思い出せない・・・。
Observer
状態の変更を通知する構造を持つパターン。
Prototype
うん・・・。
Proxy
Adapterとほぼ同じ・・・提供する側かされる側が用意するのかで名前が変わったような。
Singleton
インスタンスが一つであることを保証するパターン。
State
あれ?StateとStrategyの片方しか思い出せない。
Strategy
状態により振る舞いを変えるパターン。
Template Method
特定の振る舞いを抽象化する構造を持つパターン。
Visitor
ロジックと状態を分離する構造を持つパターン。
正解(Wikiを参考にしました。http://ja.wikipedia.org/wiki/%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3_(%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2))
Abstract Factory
関連する一連のインスタンスを状況に応じて適切に生成する方法を提供する。
Adapter
元々関連性のない2つのクラスを接続するクラスを作る。
Bridge
クラスなどの実装と、呼出し側の間の橋渡しをするクラスを用意し、実装を隠蔽する。
Builder
複合化されたインスタンスの生成過程を隠蔽する。
Chain of Responsibility
イベントの送受信を行う複数のオブジェクトを鎖状につなぎ、それらの間をイベントが渡されてゆくようにする。
Command
複数の異なる操作について、それぞれに対応するオブジェクトを用意し、オブジェクトを切り替えることで操作の切替えを実現する。
Composite
再帰的な構造を表現する。
Decorator
あるインスタンスに対し、動的に付加機能を追加する。Filterとも呼ばれる。
Facade
複数のサブシステムの窓口となる共通のインタフェースを提供する。
Factory Method
実際に生成されるインスタンスに依存しない、インスタンスの生成方法を提供する。
Flyweight
多数のインスタンスを共有し、インスタンスの構築のための負荷を減らす。
Interpreter
構文解析のために、文法規則を反映するクラス構造を作る。
Iterator
複数の要素を内包するオブジェクトのすべての要素に順にアクセスする方法を提供する。反復子。
Mediator
オブジェクト間の相互作用を仲介するオブジェクトを定義し、オブジェクト間の結合度を低くする。
Memento
データ構造に対する一連の操作のそれぞれを記録しておき、以前の状態の復帰または操作の再現が行えるようにする。
Observer (出版-購読型モデル)
インスタンスの変化を他のインスタンスから監視できるようにする。Listenerとも呼ばれる。
Prototype
同様のインスタンスを生成するために、原型のインスタンスを複製する。
Proxy
共通のインタフェースをもつインスタンスを内包し、利用者からのアクセスを代理する。Wrapperとも呼ばれる。
Singleton
あるクラスについて、インスタンスが単一であることを保証する。
State
オブジェクトの状態を変化させることで、処理内容を変えられるようにする。
Strategy
データ構造に対して適用する一連のアルゴリズムをカプセル化し、アルゴリズムの切替えを容易にする。
Template Method
あるアルゴリズムの途中経過で必要な処理を抽象メソッドに委ね、その実装を変えることで処理が変えられるようにする。
Visitor
データ構造を保持するクラスと、それに対して処理を行うクラスを分離する。
コメント
う〜ん。大分、間違えてます。うん、ブログに載せるの恥ずかしいけど、これから再勉強して、マスターするどー。
評価:
Jeffrey Richter 日経BP社 ¥ 8,190 (2013-10-10) コメント:発売予定美 2013年10月10日 |
static void Main(string[] args)
{
object o1 = new StringBuilder("A").ToString();
object o2 = new StringBuilder("A").ToString();
Console.WriteLine(o1 == o2);
Console.WriteLine(o1.Equals(o2));
}
上記のプログラムを実行すると、
false
false
になるものだと思い込んでいました。
false
true
になりますよね。System.Objectの定義を見て冷静に考えれば出せる答えなのに、まったく別の現象を論証する過程で、「勘違い」して、非論理的に思い込んでいました。思い込みって怖い!