タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

デザインパターンに関するtaketsのブックマーク (6)

  • Repositoryパターンのアンチパターン - Qiita

    よく見かけるRepositoryパターンのアンチパターンの紹介と対策です。 Repositoryパターンとは Repositoryパターンとは永続化を隠蔽するためのデザインパターンで、DAO(DataAccessObject)パターンに似ていますが、より高い抽象度でエンティティの操作から永続化ストレージを完全に隠蔽します。 例えばDBコネクションやストレージのパス等はReposiotoryのインターフェースからは隠蔽され、Repositoryのユーザは永続化ストレージが何であるか(例えばMySQLやRedis等)を意識することなく保存や検索の操作を行うことができるようになります。 これによりRepositoryを利用するロジックは業務的な操作に集中できるようになる他、データベースの移行等の永続化層の変更が発生した際にロジックへの影響を切り離すことができるようになります。 // 例) ユーザ

    Repositoryパターンのアンチパターン - Qiita
  • 【PHPで学ぶデザインパターン入門】第6回 Observerパターン | 株式会社LIG(リグ)|DX支援・システム開発・Web制作

    こんにちは、王です。 【PHPで学ぶデザインパターン】第6回はObserverパターンのご紹介です。 有名なのでご存知の方も多いと思いますが、「IFTTT」というサービスがあります。 このサービスはIf This Then Thatの頭文字を取ったもので、例えば「私が帰宅したら、彼女に、SMSで知らせるようにする」みたいなことができます。このように、あるイベントが発生したときに特定の行動をするものです。 「Observerパターン」とは 「私が帰宅したら、彼女に、SMSで知らせるようにする」の例で言うと、イベントは「私が帰宅したら」、行動は「彼女にSMSで知らせるようにする」、そしてSMS通知を受け取るのは「彼女」。さらに、通知を受け取る人は彼女に限定する必要はなく、たくさんの人に送ることもできますよね。 これが立派な「Observerパターン」です。 「Observerパターン」は以下の

    【PHPで学ぶデザインパターン入門】第6回 Observerパターン | 株式会社LIG(リグ)|DX支援・システム開発・Web制作
    takets
    takets 2015/08/07
    疎結合の代表格
  • 【PHPで学ぶデザインパターン入門】第5回 Factoryパターン | 株式会社LIG(リグ)|DX支援・システム開発・Web制作

    こんにちは、王です。 【PHPで学ぶデザインパターン】第5回はFactoryパターンのご紹介となります。 Factoryパターンの考え方は実に簡単です。「クラスのインスタンス化業務を肩代わりしてくれるオブジェクト」を導入していれば「Factoryパターン」と言っていいのです。 要はクラスのインスタンス化を行う時に、自分でnew TheClass()するのではなく、factory.create('the_class')のように、「誰か」に代わりにやってもらうのです。その「誰か」が「Factory」です。いわば、オブジェクトを作るオブジェクトですね。「オブジェクトの製造所」 → 「Factory」というわけです。 インスタンス化で複雑なオプションが必要なときに活かせるパターンです。逆に言えば、インスタンス化がさほど難しくない場合には適用すべきではありません。必要以上にアプリケーションが複雑化す

    【PHPで学ぶデザインパターン入門】第5回 Factoryパターン | 株式会社LIG(リグ)|DX支援・システム開発・Web制作
    takets
    takets 2015/08/07
    わかりやすい。
  • switch文を使ってはいけない

    昔Qiitaで書いた内容なんですが、PHPswitch文は悪名高い「==」演算子で比較を行います。 <?php switch (true) { case 0: echo '数字の0'; break; case '0': echo '文字列の0'; break; case '0.0': echo '文字列の0.0'; break; case true: echo '真偽値のtrue'; break; } このコードは「文字列の0.0」を出力します。大変分かりにくいですね。 この点はif ... elseif ...を使えば解決するんですが、switchで書きたくなるようなコードをelseifにするとおそらく読みにくくなるでしょう。 ではどうするか。 正解はオブジェクトのポリモーフィズム(多態性)機能を使うことです。 といっても、多態性で調べて出てくる記事とか書籍に関しては抽象的な説明が多い

    switch文を使ってはいけない
    takets
    takets 2014/08/14
    stateの効果。 確かにスマート。
  • サルでもわかる 逆引きデザインパターン 第2章 逆引きカタログ ロジック編 Strategy(ストラテジ)

    イントロダクション 入出力は同じだけど条件によってアルゴリズムの交換を行いたい場合や、将来的にアルゴリズムが変更される可能性がある処理に遭遇する場面があります。 また、switch文などの条件分岐にアルゴリズムを埋め込むような処理を行うと、変更が発生した場合に他のアルゴリズムへ影響が生じたりコードが冗長になったりし、保守性がよくありません。 ストラテジパターンは、アルゴリズムをクラス化することにより、アルゴリズムの切り替えを使用するクラスとは無関係に簡単に行えるようにするパターンです。 なお、ストラテジは「戦略」という意味です。条件によってアルゴリズムを切り替えるところは、まるで戦略を練っているようですね。 パターン解説 データ処理を例にストラテジパターンを説明します。 図6の左側のように、入力したデータ処理が条件により振り分けられ、最終的に同じ型のデータを出力する処理が存在します。 この

    takets
    takets 2014/04/17
    strategyパターンの実例。
  • Efficient data transfer through zero copy

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    Efficient data transfer through zero copy
    takets
    takets 2006/09/06
    - 疎結合大事
  • 1