感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

デザインパターン

命令をクラスにするCommandパターン

■Commandパターンとは 要求をオブジェクトとしてカプセル化する。 要求を表すオブジェクトや、要求をつっこんだキューやログによって、要求をパラメータとして扱う。 また、取り消し可能なオペレーションをサポートする。Commandパターンを使うことによって…

PHPでAdapterパターン

Adapterパターンって何? 一言でいうと、APIの異なるクラスどうしを「適合させる」パターンのこと。 Adapterパターンの目的は、新たなインターフェースを作成することだ。 GoF本の定義では以下のようになっている。 あるクラスのインターフェースを、クライ…

PHPでTemplate Methodパターン

Template Methodは、複数の手続きの中に共通して存在する手順を、抽象レベルで一般化するためのパターンである。 具体的には、スーパークラスで処理の枠組みを定め、サブクラスでその具体的内容を定めるようなパターンのこと。 GoFの定義は以下の通り。 ある…

疎結合って何?なんで疎結合なのがいいの?

疎結合であるとはどういうことか コンポーネントが疎結合であるとは、どういうことだろうか。 それは、インターフェースを明確に定義することで、コンポーネント間のやり取りと、コンポーネントの実装を分離している状態のことだ。 コンポーネントのインター…

【GoFデザインパターン】Observerパターン

Observerパターンの定義 Observerパターンは、オブジェクトの振る舞いに注目したパターンで、オブジェクトの変化を他のオブジェクトに通知することを目的としている。 GoFでは以下のように定義される。 あるオブジェクトが状態を変えたときに、それに依存す…

【デザインパターン】シングルトン(Singleton)のサンプル。

シングルトンって何? シングルトン(Singleton)とは、「唯一を保証する」ものだ。 Singletonの単語の意味は。「一枚札」「1つずつ起こるもの」という意味だ。 あるクラスのあるインスタンスが1つだけあって、数多くの他のコードがそのインスタンスにアクセス…

Builderパターンについて考えてみる。

Effective Javaの11p〜16p 項目2「数多くのコンストラクタパラメータに直面した時にはビルダーを健闘する」について。コンストラクタに多くの引数を渡さなければオブジェクトを作成できないときにどうするか、を考える。伝統的には「テレスコーピングコンス…

PHPでIteratorパターン。

Iteratorパターンとは リストの内部構造を隠したまま、それぞれの要素にアクセスさせるためのAPIを提供するパターンのこと。GoF本では、以下のように定義されている。 集約オブジェクトが基にある内部表現を公開せずに、その要素に順にアクセスする方法を提…

Facadeパターン。それは複雑なクラスを隠す窓口。

Facadeパターン Facadeはフランス語で「正面窓口」という意味。 複雑な関連を持つクラス群を簡単に利用するための窓口を用意するパターンである。Facadeは複雑に関連しあうクラス群を隠蔽するようなサブクラスを用意する。 そして、後ろにある複雑なクラスに…

Factory MethodとAdapter

Factory Method Factory Methodとは、オブジェクトを生成するときのインターフェースだけを規定して、実際にどのクラスをインスタンス化するかはサブクラスが決めるようにする。 Factory Methodパターンは、インスタンス化をサブクラスに任せるデザインパタ…

Template MethodパターンとAdapterパターン、Singletonパターン。

Template Methodパターン Template Methodパターンは継承を利用する。 具体的な処理内容が、クラスによって変わる部分を抽象メソッドとして定義する。 抽象メソッドを持つ抽象クラスを継承することで、定義したメソッドの実装が保証される。スマホという抽象…

PHPでデザインパターン

ことば 昔から悟は、試験で良い点数が取れるのと、頭の良さは一致しない。ただ、まったく別物でもない」とよく言った。 「物事の本質をぱっとつかむのは本当に大事なことで、それは試験問題を解くのと似ているかもしれない。一方で、試験は苦手でも、頭がい…

デザインパターンの基本用語

デザインパターンとは、繰り返し発生する問題に対して繰り返し使用できる解決方法のこと。パターンとは、基地の問題を解決するために、汎用的なオブジェクトに適用できる一連の具体的な相互関係を表す。コンポーネントとは、他のソフトウェアが使用できるよ…

設計とは何か?今月のWEB DB pressがいい!

jQueryとは JavaScriptの難しいところや面倒なところをカバーしてくれるライブラリ。 最もメジャーなJavaScriptライブラリである。jQueryは2006年1月にJohn Resig氏によってはじめて公開された。 jQueryの公式の情報源は以下にある。 http://jquery.com/ jQu…

Strategyパターンについて

Rubyの例外 begin quotient = 1/0 rescue puts('bad thing occured') end 継承 継承はいくつかの深刻な不利益をもたらす。 というのは、どんなに注意深くコードを設計しても、サブクラスはスーパークラスに依存してしまうことだ。 そのため、継承を多用する…

Rubyでデザインパターン

Rubyによるデザインパターンという本を読み始めた。 読んでみて思ったのは、「色んな言語からデザインパターンを見ることは、新たな発見につながる」ということだ。 結城浩先生のJavaのデザインパターン本はひと通り読んだりもしたんだけれど、あえてRubyやP…

Adapterパターンを使ってみた。今あるクラスを再利用してみる。

AdapterパターンはWrapperパターンとも呼ばれる。 今あるモノを包み込んで、別の用途に使えるように変換してくれる役割を果たす。元々あるものと適合しなくても一皮かぶせることで、使いたい用途通りに再利用できるようにする。デザインパターンはそもそも、…

プログラムは拡張に対しては開かれていなければならず、修正に対しては閉じていなければならない。

ことば OCP(Open/Closed Principle:開放/閉鎖原則)とは、クラスなどのプログラム単位は、拡張に対して開いて(open)いなくてはならず、 反対に修正に対しては閉じて(close)いなくてはならない、という原則です。 この原則はDRY原則が守られている場合にのみ有…

【プログラミング 120.5時間目】キューを使って、順番に処理を実行したい時。

処理したい仕事が何個もあるとする。 その処理には順番が大事だ。1つの仕事が終わったら次の仕事。 終わったら次の仕事。というように順に実行しなければならない。そういうときに「させたい仕事」をキューに詰め込んで、 その詰め込んだ順番に「仕事を処理…

Worker Threadパターンについて

会社に尊敬する先輩がいる。 その人は僕の6歳年上だ。ゼロから勉強したはずなのに、iOSアプリも一ヶ月くらいで作りあげてしまった。 経験値が高いと、新しいことの習得も早い。その人のさらに上にはもっともっと優秀な人がいる。6歳年上のプログラマーが6合…

Thread-Per-Messageパターン(マルチスレッドデザインパターン)

Thread-Per-Messageパターンは、別のクラスに仕事を投げて、自分は次の仕事をさっさとやってしまうパターンである。 perというのは「〜毎の」という意味で、thread per messageとはメッセージ毎のスレッドという意味になる。 このクラス図でいうと、Clientが…

【プログラミング 43-44時間目】Guarded Suspentionパターン

増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編作者: 結城浩出版社/メーカー: ソフトバンククリエイティブ発売日: 2006/03/21メディア: 大型本購入: 15人 クリック: 287回この商品を含むブログ (200件) を見るデザインパターンのマルチス…

【プログラミング 13時間目】Facadeパターン

オープンソースを読んでいたら、Facadeパターンが使われていた。 そこで気になったのでFacadeパターンを勉強してみた。感想は、「これはやっぱり便利な考え方だ」というもの。 Facadeの考え方は当たり前のことのように見えるけれど、学習することで今後意識…

【プログラミング 17時間目】JavaEE デザインパターン MVCパターン

JavaEEのデザインパターンの本。 3章はプレゼンテーション層のアーキテクチャについて。 今回は読むだけ。明日は写経する。■デザインパターンを学ぶ意義 ・プレゼンテーション層はユーザとのやりとりを制御するため、変更要求が最も多く集中する。 ・ソフト…