Design

Dependency Injection

「DI パターン」と これを利用した「DI コンテナ」ってのがある 「DI コンテナ」使いたいけど「DI パターン」って何?状態 > 荒いけどまとめる ここにあることが全部ではないので、正確なことは最下記リンクへ DI パターンとは何か 「インスタンス変数にオブ…

Builder Pattern (Java)

Effective Java より 数多くのコンストラクタパラメータに直面した時の対処法 src | +-- jp.ymatsukawa | +-- builder | | | +---- SignupUser.java | +-- Main.java jp.ymatsukawa/Main.java package jp.ymatsukawa; import jp.ymatsukawa.builder.SignupUs…

static factory method (Java)

jlordiales.me stackoverflow.com 2 記事の書留め コンストラクタの検討と同様、static factory method を検討しよう コンストラクタと対照的に、名前を持てる(また、シグニチャを気にしなくて良い) 不要なインスタンス生成を避けられる 初回のメソッド実行…

Proxy パターン

良いパターンなのに良い例が思い浮かばない

Singleton pattern

(Java の深み) インスタンス生成は一回だけ src | +-- jp.ymatsukawa +-- Main.java | +-- single | + -- Single.java jp.ymatsukawa/Main.java package jp.ymatsukawa; import jp.ymatsukawa.single.Single; public class Main { public static void main(S…

委譲されるクラスは委譲したクラスが隠蔽する

(一番進捗が出ているタスク, 一番進捗が出ていないタスク void → int) 設計 顧客 | マネージャー、エンジニア1、 エンジニア2 が居るとする 顧客は知りたい エンジニア1、エンジニア2 が進めるタスクの内 一番進捗が出ているタスク 一番進捗が出ていないタス…

状態を表現管理する State パターン

(有限オートマトン) Singleton は未考慮 ↓ classify src | +-- jp.ymatsukawa +-- Main.java | +-- state | + -- Worker.java + -- WeekdayState.java + -- MorningState.java + -- AfternoonState.java + -- EveningState.java + -- NightState.java jp.yma…

Strategy Pattern 処理の切替

拠点報告( hubReport.showReport ) を 「東京拠点 → 大阪拠点」と順に出力する 内部処理 処理ロジックを 東京拠点の報告処理 → 大阪拠点の報告処理 としてみる src | +-- jp.ymatsukawa +-- Main.java | +-- report | + -- HubReportStrategy.java (interfac…

インスタンス生成の分岐: Factory method と interface

stuff → staff 素晴らしい 今後この手法を参考にする クライアント側がプロダクション内部のことを気にしなくて良い プロダクション側が固定値でインスタンス生成の分岐可能 引数違いのコンストラクタ生成も可能 src | +-- jp.ymatsukawa +-- Main.java | +-…

インスタンス生成の分岐: Factory method の細工

stuff → staff 続き: インスタンス生成の分岐: factory method パターン - Red > Green > Refactor > Red ダメ 私に響かない クライアント側で冗長な情報が必要 パッケージ名、サブクラス名は公開せねばならぬし (jdbc の悪夢) プロダクション側でインスタン…

インスタンス生成の分岐: factory method パターン

stuff → staff 元: インスタンス生成の分岐(Java) - Red > Green > Refactor > Red 自分に一番響く設計を手当たり次第 デザインパターンの Factory method より (記事中では Factory > Creator) src | +-- jp.ymatsukawa +-- Main.java | +-- stuff | + -- C…

インスタンス生成の分岐(Java)

stuff → staff 思い出し用に書き残し Stfuff のコンストラクタは最適化できるか? まず設計の目的から src | +-- jp.ymatsukawa +-- Main.java | +-- stuff | | | + -- Stuff.java +-- stuffType | + -- StuffType.java + -- Manager.java + -- Engineer.java…

design of MV(what) (MVC, MVVM)

fowler's http://martinfowler.com/eaaDev/uiArchs.html codeproject http://www.codeproject.com/Articles/66585/Comparison-of-Architecture-presentation-patterns-M

3NF ; Design

Definition リレーション R が 第二正規形であること 全ての非キー属性(non-key attribute)は、いかなる候補キー(candidate key)にも推移的関数従属していない (非キー属性が、候補キー以外の属性に完全関数従属していない) Objective 将来的にデータモデル…

Transitive functional dependencies

Definition Given When ...(i) ...(ii) ...(iii) Then Transitive functional dependencies is specified Ex Because ...(i) ...(ii) ... (iii)

2NF ; Design

第二正規形 正規化方法よりも「関数従属」のロジックが組込めているかが重要点になる。 Definition リレーションスキーマ R が 第二正規形である。 R は第一正規形である。 R のすべての非キー属性は R の各候補キーに完全従属している。 ex [仕入先] [商品…

Functional dependency ; Design

関数従属性/部分関数従属性 candidate key => 候補キー => (主キーの候補となるキー and タプルを一意に識別できる and 極小) non-key attribute => (主キーを含めていかなる候補キーにも属していない属性) Definition and ex Given and ... only is true an…

many to many(関連) ; Rails ; Design

多対多を実現するには中間モデルが必要(当事者モデル2つだけでなく) フレームワーク思想に則って現れたらしく。 この経緯に付いては(分かっていないことが多いので)省略。 Prepare $ rails g model Member name:string $ rails g model Article title:string…

外部キー参照を rails g model で プロパティ指定する ; Design

何度も同じことで失敗している いい加減アウトプット コード rails g model 参照始点モデル名 プロパティ1 プロパティ2 ... 参照先モデル名(小文字から始まる):references ex rails g model Subject name:string student:references app/models/subject.rb c…

one to many(関連) ; Rails ; Design

1 対 多 on Rails モデルを使ったとき、どのようにして実現するか Student - Subject 関連を使う Prepare $ rails g model Student name:string $ rails g model Subject name:string student:references $ rake db:migrate db/seeds.rb Student.create! do …

one to one(関連) ; Rails ; Design

Rails 書留レベル one to one をどうやって実現するか Subject - Page 関連 generate model $ rails g model Subject name:string $ rails g model page name:string subject:references $ rake db:migrate app/models/subject.rb class Subject has_one :pa…

関連(Relation) ; Design

Rails の書留 元を辿れば「設計」 DB には世話になってる なぜ Relation があるのか 共通の命令をコードの中で端的にかつ易に記す為。 Relation が無い場合 class Custom ActiveRecord::Base end class Order ActiveRecord::Base end 新規 order を 既存 cus…

関数決定子/関数従属

リレーション R が与えられている R に於ける属性の組 X は 関数決定子 と言われる X めいめいの属性値が漏れ分無く一つの Y の属性値に関連付いてるとき R は 関数従属 を満たしていると言う。 ex. studentID Semester Lecture TA 参考元 Functional depend…

1NF ; Design

定義 シンプルなドメイン[1]上で定義されたリレーション[2] シンプル 他の幾つかのドメインの直積でない ... 甲 ドメインの冪集合ではない(属性値として集合をとらない) ... 乙 not シンプルな例 甲 他の幾つかのドメインの直積であるリレーション Z(name) n…

OLTP と OLAP ; Design

DB に関連する。設計らしい 入門の門前すら立っていないと思うが、やる OLTP (On-Line Transaction Processing) 処理方式の一つ。端末からの要求があればホストコンピュータが即座に処理応答する方式。 百万など多数のリクエスト 検索、更新、削除 を、イン…