ArrayList と List の話
http://www.kmonos.net/wlog/58.php#_2309060206
のあたりから、なんか議論全然おってませんがなんとなく。
public メソッドは全て interface で記述したものをオーバーライドすべきだみたいな主張があった気がするんですが、あれを進めて ArrayList から List を抽出できれば interface 作る手間がはぶけていいんじゃないかなーとか。
class ArrayList { /* ... */ }
interface List = ArrayList;
しょせん .c から .h を生成する人間の発想。
ていうかこれって結構やったことあって、 Ruby とかで、
Store = PStore # Store = YAML::Store
とか書くような。クラスがオブジェクトな言語でのあぶすとらくとふぁくとりーぱたーん、じゃなくてふぁくとりめそっどぱたーんか。
今見たデザインパターン
で、なんとなく今の目で見たデザインパターンを記録したくなりました。今っていうのは要するに集団開発から離れてて、設計とかインターフェースとかどうでもいいよ病がヒドくなりまくっている、今。
Abstract Factory
こんなでかいもの作らない。
Builder
こんなのあったっけ系。ただの多態の説明というか。
Factory Method
いちいちファクトリークラスとか作るのめんどい。クラスがオブジェクトならさっきの Ruby の例みたいなのができて良い。
Adapter, Bridge, Proxy
めんどい。けど割とよくやる気がする。ラクな委譲構文があればなぁ…と思いながら。
あとこれらもなんか多態の説明というか。
Composite
好き。
Flyweight
OO とあんま関係無い気がするけど、まぁ使う。
Chain of Responsibility
めんどい。委譲構文があってもあんまやりたくない。
Command
やったことない。本当にうまく undo 実装できるんかと。
Interpreter
やったことない、と思うたぶん。なんか多態の説明。
Iterator
システムに合わせて適当に使う、作る。
Mediator
これなんだっけと思った。あー Player とか Enemy とかが結局 Game クラスに処理投げるような話か。全部の情報がグローバルにあればいいんだ。
Memento
遺産をわざわざ別オブジェクトに残すのがめんどいです。
State, Strategy
しばしば switch-case の方が楽なんだ。あと State は fiber で消せる場合とか。
Template Method
好き。