PHPで学ぶデザインパターン - Strategy
2018 Dec 09概要この記事はPHPで学ぶデザインパターン Advent Calendar 2018の記事です。 今回はStrategyパターンについてかきます。 Strategyパターンとは?Strategyパターンは、アルゴリズムの切り替えを容易にするようなパターンです。異なる処理をそれぞれ別のクラスに定義するため、 処理を動的に選択できるだけでなく、条件分岐を減らすことも可能としてします。OCP(open/...
概要この記事はPHPで学ぶデザインパターン Advent Calendar 2018の記事です。 今回はStrategyパターンについてかきます。 Strategyパターンとは?Strategyパターンは、アルゴリズムの切り替えを容易にするようなパターンです。異なる処理をそれぞれ別のクラスに定義するため、 処理を動的に選択できるだけでなく、条件分岐を減らすことも可能としてします。OCP(open/...
この記事はPHPで学ぶデザインパターン Advent Calendar 2018の記事です。 概要Factory・Factory Method・Abstract Factoryについてかきます。 Factoryパターンについて知るまずはFactoryパターンについてざっくり説明します。 interface Robot { public function say(); } class Blue...
概要試して理解 Linuxの仕組みのメモリ管理の章を読んでいて理解の乏しい単語があったのでいくつかピックアップしてまとめる。 OOM Out of memory システムが物理メモリと仮想メモリを使い切ったことにより、新規にメモリを確保できない状態 OOM Killer(Out of Memory Killer) OOMのときにプロセスを強制終了させることで空きメモリーを確保するLinuxカーネル...
概要2進数、10進数、16進数をそれぞれ変換するための計算方法についてまとめる。 重みとは計算する前の前提として、重みについて理解する。 重みとはそれぞれの桁を表す数のこと。 ex. 10進数1234 10^04 = 410^13 = 3010^22 - 20010^31 = 1000 sum 1234 10^0、10^1、10*2...が重み。 ex. 2進数11012^01 = 12^...
概要この記事はPHP Advent Calendar 2018の記事です。(ちょっと早めに投稿しています) インターフェースはメソッドの実装を保証する”契約”的意味合いの他、タイプヒンティングによって実装を抽象に依存させる(=実装の切り替えをしやすくする)こともできる。 インターフェースの定義・実装基本的なインターフェースの定義と実装。 <?php interface Action { ...
概要Golangのインターフェースについてまとめる。 Golangのインターフェースとは 特定のメソッドの型だけを列挙した型 インターフェースFooで宣言したメソッドが全て実装されている構造体は、型Fooとして扱うことができる。 インタフェースを使うとポリモーフィズムを実現することができる インターフェースの定義type <型名> interface { <メソッド名(&l...
概要Golangのポインタの基本では参照渡しと値渡しの違いの観点からポインタについて書いたが、それ以前にポインタを扱っているうちに混乱してきたため、ポインタの概要をまとめる。 ポインタ型とは メモリー上のアドレスを記憶する変数の型のこと ポインタ型の定義 *を使って定義する var s *string // 変数sはstring型のポインタ。型は*string アドレス演算子と間接参照演算子ア...
概要Golangでの変数定義・宣言のパターンをまとめる 変数の定義・宣言における注意 1文字目が大文字の場合は、他のパッケージからも見える変数 1文字目が小文字の場合は、そのパッケージでしか見えない変数 変数の定義・宣言Variable declarationsvar i int fmt.Printf("%T", i) // int var a, b, c string fmt.Printf(...