"Gang of Four"の略称。『オブジェクト指向における再利用のためのデザインパターン』を書いたErich Gamma、Richard Helm、Ralph Johnson、John Vlissidesの四人(ないし彼らの提唱するデザインパターン体系)をさす。"GoF"の呼称は文化大革命の「四人組」に由来。
デザインパターン
前置き 引用元:Java言語で学ぶデザインパターン入門第3版 デザインパターンはクラスの再利用化を促進するものです。 再利用化を促進するとは、 クラスを部品として使えるようにするということであり、1つの部品を修正しても、他の部品の修正が少なくてすむ、ということなのです。 本記事は当ブログ管理人よしたろうによる『GoFデザインパターン入門シリーズ』です。本記事では、各デザインパターンの総合的理解ができることをコンセプトにしております。ピンポイントな情報ではなく、理解に必要な周辺知識をできる限り記述していきます。一記事あたりの文章量は多くなる傾向になります。あまりそういった記事が見当たらないこと、…
前置き 引用元:Java言語で学ぶデザインパターン入門第3版 デザインパターンはクラスの再利用化を促進するものです。 再利用化を促進するとは、 クラスを部品として使えるようにすることであり、1つの部品を修正しても、他の部品の修正が少なくてすむ、ことなのです。 本記事は当ブログ管理人よしたろうによる『GoFデザインパターン入門シリーズ』です。本記事を見るだけで、各デザインパターンの総合的理解ができることをコンセプトにしております。ピンポイントな情報ではなく、理解に必要な周辺知識をできる限り記述していきます。一記事あたりの文章量は多くなる傾向になります。あまりそういった記事が見当たらないこと、自身…
始めに 本記事は当ブログ管理人よしたろうによる『GoFデザインパターン入門シリーズ』です。本記事を見るだけで、各デザインパターンの総合的理解ができることをコンセプトにしております。ピンポイントな情報ではなく、理解に必要な周辺知識をできる限り記述していきます。一記事あたりの文章量は多くなる傾向になります。あまりそういった記事が見当たらないこと、自身の学習のためにそういった形式にしております。以前の記事で詳しく紹介した部分はリンクの引用をする場合もあります。 こちらの記事では以下の流れでデザインパターンの解説を行なっています。 この中で最も重要なのは以下のふたつ 現代のGoFデザインパターンの立ち…
ストラテジーパターンというGoFのデザインパターンが良いコード悪いコードでも紹介されていたので、素振りします。 自分の言葉で上手な言語化ができていないので、メリットは参考情報や良いコード悪いコードの購入、または別の方の記事を参考にしてください。 環境 Java 17 今回の処理 複数の言語の文章を、ひとつの言語に変換する。 ※ 変換の具体的なロジックは実装しない。 対応 文章と言語名が記載されたDTOを生成する。 @Data public class Question { private String sentence; private Locale locale; } ストラテジーパターンを…
Adapter メソッドが違うなどして継承できない2つのクラスの仲介をする 既存のクラスは修正せず、仲介するAdapterを作ることで修正範囲を最小限にできる デザインパターン ~Adapter~ 内部処理用のBeanクラスと画面から値が入ってくるBeanクラス同士が 直接、継承などで結び付けられない時に使うのか! 新規の画面と入力値がやりとりできないから、とかで新しくBeanを作ったことがあるような…
Prototype インスタンスの生成をnew Class()でなく、インスタンスから別のインスタンスを生成する 雛形を作っておき、それをコピーして使う 例が思い浮かばなかったのでTECHSCOREの記事を使います 図形描画で「直線を描画するクラス」と直線を組み合わせて「図形を描画するクラス」がある 図形描画クラスで定義した三角、星などの図形を描画する処理を 雛形管理クラスでmap.put("star",星型の描画処理)のようにインスタンスを保存する → 星型をたくさん描画したい時はmap("star")だけでOK 図形ごとにクラスを作成するとクラス数が多すぎて保守性が下がるのでPrototy…
Factory Method スーパークラスを定義して、処理はサブクラスが行う スーパークラスがサブクラスに依存しないから改修はサブクラスだけで済む スーパークラスは「登録する」ことだけ定義されているので、サブクラスに依存しない Builderパターンとの違い Builder クラスのアウトラインは抽象クラス 処理を持ったサブクラスと組み合わせて複雑な処理を実現 Factory Method 抽象クラスには概念くらいアバウトな定義だけ(登録するなど) サブクラスは登録する処理だったら何でもOK 抽象クラスがサブクラスに依存しないので修正範囲を切り分けられる Abstract Factoryパタ…
Builder 抽象クラスを定義して処理は継承したクラスが行う 具象クラスのインスタンスによって処理の切り替えが簡単にできる 商品登録は「フォーム画面から登録」と「バーコードから登録」できる ピンクの商品登録クラスに具象クラスのインスタンスを渡せば登録方法が切り替えられる フォームから登録だと、「フォーム登録インスタンス」をピンクの商品登録に渡せばOK
デザインパターンとは 今さら聞けない!デザインパターンとは【初心者向け】 デザインパターンとは、JavaやRubyなどのオブジェクト指向の言語で使われる設計パターンのことです。過去のエンジニアが解決してきた方法(設計)が、デザインパターンとしてまとめられているのです。 読みやすく、ムダのないコード書いてみたい… 行き当たりばったりのコーディングとはお別れだ!! Gang of Four(GoF) GoFのデザインパターンまとめ あらゆるコードのパターンは23種類に落ち着く、らしい! 早速、1つ目のパターンを見てみる Abstract Factory 抽象クラスを作成し、実装は抽象クラスを継承し…
Software Design 2023年6月号を読んで、ちょこっとずつ感想を書いてます。 gihyo.jp いつも参加しているSoftware Design輪読会に向けての予習でもあります。 softwaredesign.connpass.com 第1特集 正しく理解したい クリーンアーキテクチャとは何か? 開発に活かせる設計のエッセンスを探る 第1章:クリーンアーキテクチャの背景 ブログ記事、書籍、時代背景から用語の意味を押さえる ......田中 ひさてる 有名な円の絵ですが…わかるようなわからないような…でした。 依存関係をユースケースから外側へ…というのが主張らしいです。 MVC、そ…
先に投稿した及川幸久氏の動画文字起こし記事に出てくる論文を、ざっくりと日本語に訳しておきました。 2016年3月14日に掲載された「SARS-like WIV1-CoV posed for human emergence」(←クリックで論文原文に飛びます)では、WIV1 (Wuhan Institute of Virology virus, One) =武漢研究所ウイルス1が普通に出てきます。 2016年です。新型コロナパンデミックの4年前、この時点で新型コロナウイルスとされるものが武漢研究所で誕生していた。これは、閉鎖に追い込まれた私の以前のブログにて2年前に記述しております。流れを再掲載し…
「JAWS-UG SRE支部 #6」でLTしてきました。 1ヶ月4本登壇の内3本目でした!
○誇張しすぎた微温湯の考えた14+AJ難易度表 SSS→出る気がしない SS→めちゃ頑張れば出るかも or めちゃ頑張って出した S→それなりに頑張れば出そう or まぁまぁ頑張って出した A→再AJも難しくなさそうなライン B→何回かに1回はAJが出る(たぶん) C→余裕でぽいぽい出せる(たぶん) D→AJ出ないと萎える E→(笑) F→14 ※曲数多すぎて適当に作っちゃった ・SSS リトハ 神威 大炎上 ラブジャス 脳天 マン・イン・ザ・ミラー エンドマ 炎上 ・SS ハーレクイン ゼベル プニャー エンドタイム 破滅 小悪魔 バイエラTears アポカリプス リババレ サイスオブデス…
ロジスティック回帰分析の適合度検定であるHosmer-Lemeshow test(ホスマー・レメショウ検定)のRでの実装について考えてみる-その2。 要旨としては 単純にデータを期待確率の小さい順に並べて上から等分に指定されたサブグループ数で分けた場合でのHosmer-Lemeshow testについて考えてみた。 Hosmer-Lemeshow testはグループ分けが重要である。 この点については次の解説が詳しい。 回帰分析を用いた疫学データの解析 基本編(2) このグループ分けについて、Rで多く使用されている{ResourcesSelection}パッケージのhoslem.test()の…
前回はasciidocって何よという話は書いたものの、特徴を述べて終わりでした。 今回は中身についても触れつつ、asciidocについて徒然なるままに書いてみたいと思います。 具体的には、オリジナルのサイトのうち、 虎の巻的な要所だと思った部分を補足してみます。 なお、最新の情報は公式サイトから適宜確認されることをお勧めします。 text formatting テキストを太字にしたり、斜体にしたり、打ち消したりします。 リンク先にあるconstrainedとunconstrainedは、前後にスペースを入れる必要があるかないか、という違いがあるようです。 日本語文書だと、unconstrain…
ロジスティック回帰分析の適合度検定の手法の一つであるホスマー・レメショウ検定(Hosmer-Lemeshow test)*1について、Rにおける実装について考えてみる。 要旨としては RでHosmer-Lemeshow testを実行する{ResourceSelection}のhoslem.test()では0.3.5を含む以前のバージョンではロジスティック回帰分析のモデルによっては正しいp値が計算されていない可能性がある。 {performance}のhosmer_test()は{ResourceSelection}のhoslem.test()で正しいp値が計算されないロジスティック回帰分析の…
○4ー1で勝って15勝18敗0分け。 1 2 3 4 5 6 7 8 9 計 巨人 0 1 1 1 1 0 0 0 0 4 DeNA 0 0 0 0 0 1 0 0 0 1 まさかのDeNA二連勝。 試合は2回にブリンソン選手のタイムリーで先制します。/新潟の勢いそのままに\東と好相性のブリンソンが先制タイムリー⚾プロ野球(2023/5/9)🆚DeNA×巨人📱Live on #DAZN#DAZNプロ野球 pic.twitter.com/qHhehGGWrG— DAZN Japan (@DAZN_JPN) 2023年5月11日 その後も岡本和真選手の犠牲フライ、吉川尚輝選手とウォーカー選手のタイ…
05/01(月) 午後1時半起床。しばらく布団でスマホを触った後、起き上がって購買に行きラノベを受け取ったりパン類を買い込んだりした。そこそこ遅めの時間に行ったのに大量に売れ残っていてびっくり。大型連休を前に学生が少なくなっているのだろう。自分はたくさん買えてほくほく顔だった。 しばらく週記を書いた後午後4時半からインターン先定例会に参加した。先週の進捗は1on1でタスクを確認したのと少し作業しただけ。 勉強会は3DCGの仕組みについてだった。この勉強会のために自分でプログラムを書いてモデルの表示やシェーディング、テクスチャー貼り付けなどできるようにしたらしく、その熱意に感服。特にシェーディン…
Value Objectについて調べてみた GW、せっかくなので勉強してみよう、と意気込んだ結果色々と手を出して、気がついたらValue Objectについて調べてました。 どうしてこうなったのかと説明をしつつ、少し記事にしてみます。 ※この記事は定義の良し悪しについて論じるものではなく、自分が調べたことをまとめたものです。批評をする意図はありません。 勉強を始めた動機 最初はデザインパターンを学習しようとしていました。 というのは先日、ちょっとしたWebアプリケーションを作成する機会があり、その際に「これはどう実装するのが良いのかな」と悩んだことがきっかけです。 普通にコーディングするのは問…
はじめに GWなのでGoFのデザインパターン23種をすべて書きます。巷ではJavaソースコードを用いた書籍はいくらかあるのですが、他の言語だと時折有志の方がブログにまとめていますが全部書いてあることは少なく、また実際に自分で書かないと使えそうなタイミングで思い出すこともできないので、同じく型システムがまともに使えて業務や趣味でもよく使用するC#で全部書いていきます。 また、例として紹介されるものは分かりやすいものや典型的な使用例が想定されるものもあるのですが、大体Personクラスが出てきて名前が云々といったことが多いので、折角なので自分で例を考えつつ書いていきます。できれば実装中のロボットに…
読書のスピードをもっと上げたいこの頃です。
大学の図書館サービスの1つに日経BP記事検索サービスがあります。 いまやサブスクでいろんな雑誌等が電子書籍で読めるようになりましたが、かなり前からこのサービスはあって、昔から日経雑誌を読んでいた私としては(個人としては)無料でこんなサービスが利用できるありがたみを噛み締めてきました。 昨夜、なんかの作業の流れで以下の日経ソフトウェアの記事を見つけて、古い記事だけど学生もやってるPythonだしC言語でした面白そうなのでゼミでやろうかな。。。と思ったところでした。 特集1 スクリプト言語をゼロから作ろう Part1 言語処理系の作成は難しくない! | 日経ソフトウエア | 日経BP記事検索サービ…
デザインパターンの説明はどれか。 Javaなどのプログラム言語に依存した,コーディングの定石やノウハウを集めたものである。 再利用性や柔軟性の高いプログラムを設計するために,参考となるオブジェクトの組合せ方をパターンとして分類したものであり,代表的なパターン集としてGoFパターンがある。 ソフトウェアの開発方法をパターン集としてまとめたものであり,組織編成や開発管理のためのパターンがある。 ソフトウェアの基本構造を設計するためのパターンであり,その一つとしてMVCパターンがある。 解答・解説 (adsbygoogle = window.adsbygoogle || []).push({}); …
システムアーキテクト試験を受験する方向けに、午前Ⅱ対策を中心としたチートシートを用意しました。 こちらは、あくまで試験合格を目的とした内容になっていますので、きちんと学習したい方は、過去問題解説ページ等をご覧ください。 当ページの内容は動画(YouTube)でも公開していますので是非ご利用ください。 (adsbygoogle = window.adsbygoogle || []).push({}); 試験別 午前Ⅰ 同時開催の応用情報技術者試験午前問題と同じ問題が出題されます。(80問中30問)よって、対策は応用情報技術者のページを参考にしてください。 なお、午前Ⅰは応用情報or高度区分の合格…