- - PR -
メソッドの入れ替え
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-08-13 11:25
レスどうもありがとうございます。
ダイナミックにクラス作成とかできたらいいんですが。 どうも難しそうですね。 | ||||||||
|
投稿日時: 2007-08-13 12:08
バイトコード操作以外では、GroovyとかJRubyに食わせる
コードを動的に生成して、ロジックを変更するとかいう 方法もありかなと。 >メソッドgetStr1からの返却を一次的に変更して利用したいのです。 >継承元のクラスを動的に変更できる。 システム起動時だけ変更を行うことは多々あることなんですが、もし プログラム実行中にやる場合は、Java向けに設計されていない構造 のプログラムだと思います。 仕事柄、よく分かっている人には理解できるが、場合によってはそう いった人でも勘違いする可能性があるプログラム -> ご法度! という方針を取っています。たとえ動的な書き換えでコード量 が1/100で処理速度やメモリ利用効率が向上したとしても、メンテナンス 性が低下するコードは、その後の工数増加に直結するので使いません。 | ||||||||
|
投稿日時: 2007-08-13 23:54
「アルゴリズムを変更したい」という前提があるのであれば、
その時点で変更が容易なクラスデザインにするべきでしたね。 | ||||||||
|
投稿日時: 2007-08-15 19:53
こんにちは、プレミアムです。
いままでの文脈から、 ↓のような話では絶対ないと思うのですが、書いてみようと思います。
Test2を実行すると abcde:ABCDE aBcDe:ABCDE となります。 「■ここ」の部分は、 Bean1 obj = new DBean(); でないといかんとか、そうゆうことでしょうか? | ||||||||
|
投稿日時: 2007-08-16 09:46
レスありがとうございます。
Bean1に相当するクラスはたくさんあるのですが、同じメソッドを同じように変更するの で、DBeanに相当するクラスをたくさんつくらないで簡単にすませる方法はないかという ことなんです。 数が少ないならプレミアムさんの方法なんですが、それを効率よく、多くのクラスに適用 する方法を模索してるのです。 | ||||||||
|
投稿日時: 2007-08-16 10:46
プレミアムです。状況は理解できました。
Strategyパターン等でリファクタリングをする というわけにはいかなそうな雰囲気ですが、 今後の保守、拡張などのためにも、 そうゆう手も視野に入れる必要があるのかとも思います。 が、実際どうなんでしょうかね? 工数かかりすぎますよね。 | ||||||||
|
投稿日時: 2007-08-16 11:51
いわゆる、後付けでクラスを改造したいという問題だと思います。
改造対象のソースコードがなかったり、大人の事情で改造が禁止されている場合は、リフレクションや逆コンパイルなどになりますが、ソースコードがいじれる場合は、要はリファクタリングをすれば良いだけの話になります。 今回は、ソースコードは原則自由にいじれるが、改造のためのキーボードタイピング数や仕様変更書のページ数は少なくしたい、という要求ですよね。
この「Bean1,UBeanは変更したくありません」というのが、やはり後付けの要求になるので、オブジェクト指向的に解決が困難になるのだろうと思います。
後付けで改造するという制約があって、スーパータイプ側を改造できない以上、たくさんあるサブタイプ側を個別に改造しなければならなくなるのは、当然なことではないでしょうか。 -- unibon {B73D0144-CD2A-11DA-8E06-0050DA15BC86} | ||||||||
|
投稿日時: 2007-08-16 14:37
匿名クラスとかはダメなのでしょうか。
見たいな感じで。 |