今はPHPの時代Perlがこの先生きのこるのは無理3
■ このスレッドは過去ログ倉庫に格納されています
0716nobodyさん
NGNGXMLにもあるし、Java, C++はもちろん、C#, Perlにもある。
PHP5が発表されるとき、名前空間がサポートされるはずだったが
なぜか不採用になってしまったらしい。とても残念だ。名前空間があれば、PEARも
もっと優れた使い勝手の良いライブラリになっていただろうに。
Java, Perlではpackage, C++, C#ではnamespace
というキーワードを使って指定している。
PHP5もnamespaceというキーワードを使って名前空間を実現できるはずだった。
C++やC#のnamespace, Java, Perlのpackageのように。
これがなきゃパッケージ名は異なるがクラス名は同じ、ということを実現できない。
また、Facadeパターンも実現しづらい。なぜなら、パッケージプライベートを実現できないから。
Javaでは、クラス宣言の頭にpublicとつけると、そのクラスはパッケージ外部からもアクセスできるようになる。
だが、publicをつけないと、同じパッケージ内にあるクラスからしかアクセスできなくなる。
これを応用して、Facadeパターンを実現することができる。
同じパッケージ内でFacadeに相当するクラスのみをpublicにして、他のクラスはすべてパッケージプライベートにする。
ある機能を集めたが、クラス間の依存関係を減らすために意図的にFacadeを経由してしか、
他のクラスにアクセスできないようにすることができる。Facadeとはデパートの入り口のインフォメーションカウンター
のようなものであり、そこでデパート内のこの店(パッケージプライベートになっているクラス)はどこにあるのか、
と行き先を聞くことができる。デパートに入ると、かならずFacadeを通る仕掛けだ。
また、Javaではパッケージ名にドメイン名を含めることが推奨されている。
なぜなら、誰かが作ったクラス + パッケージが同じ名前で重複することを避けるため。
例: package net.2ch.www.php.test.example;
というように。
日曜プログラマに不要といっても、大規模開発では重宝するよ。
■ このスレッドは過去ログ倉庫に格納されています