私は、アクセスするには複数の異なるクラスが必要なメソッドが1つしかありません。このメソッドを使用する必要があるクラスは、すでに抽象クラスを継承しているため、継承は使用できません。あなたはこの状況で何をしますか?複数のクラスで共有される1つのメソッド
答えて
[I] tはちょうどそれを行うだけで、それが成長するただ一つの方法
ためのユーティリティ クラスを作るためにラメようです。それは常にそうです。 Common.Utilitiesやその性質の何かは、自明ではない解決策において常に必要です。
あなたは継承を使用できないということを意味しますか?
抽象クラスにメソッドを書き込む場合は、実装を記述することもできます(抽象クラスのすべてが抽象クラスである必要はありません)。
しかし一般的に、ある種の 'GeneralUtils'クラスを持つことをお勧めします。あなたがこれらの機能のいくつかで終わるからです。
私は、それらが既に別の基本クラスから継承しているので、これらのクラスが共有できるメソッドを使って、基本/抽象クラスを作成できないことを意味しました。 Ohh; – Allensb
大丈夫です –
クラスは、小さくて集中しているマシンであることに注意してください。クラスが1つのメソッドしか持たない場合は、非常にの小さな集中マシンです。それには何も問題はなく、コードの集中化は貴重です。
このサイトには「常設オベーション」オプションがありませんので、アップヴォートとコメントをお待ちしております。よく言った! –
私は明確な答えを与えるためにもっと多くの情報が必要です。 しかし、well-namedクラスの名前のついた1つのメソッドでは、可読性が不思議になる可能性があります(例えば、継承ベースのソリューションと比較して)
用語ユーティリティメソッドを使用しているので、静的メソッドを使用して実行します。
あなたのクラスは、「実装」しかし、そのインターフェイス上で拡張メソッドを作成することができるインターフェイスを作成し、あなたのクラスは、その後魔法を呼び出すことなく、そのメソッドを取得
:-)使用することができますカンニングがありますあなただけIDoThisThing
public class MyClass, MyBaseClass, IDoThisThing
{
//...
}
を追加することができ、彼らは:-)その事をゲットあなたのクラスの今のユーティリティクラス...
public Interface IDoThisThing {}
public static void DoThisThingImpl(this IDoThisThing dtt)
{
//The Impl of Do this thing....
}
これは実効的にユーティリティクラスを取り巻く論理的な砂糖ですが、クライアントコードをきれいに(クラスのメソッドとしてのみ表示されるように)作成します。
拡張メソッドを使用することができます...
namespace ExtendMe
{
public interface IDecorate { }
public static class Extensions
{
public static void CommonMethod(this IDecorate o) { /* do stuff */ }
}
public class Blah :IDecorate {}
public class Widget : IDecorate {}
class Program
{
static void Main(string[] args)
{
new Blah().CommonMethod();
new Widget().CommonMethod();
}
}
}
- 1. 共有NSArray 1つのクラス内の複数のメソッド間の内容
- 2. Jenkins:1つの共有リソースを持つ複数のジョブ
- 3. 複数のangular.jsアプリ間で1つのサービスを共有
- 4. 複数のサーバーのイベントと共有クラス
- 5. C++クラスの複数のインスタンス間で共有されているタイマーカウンタの問題
- 6. VS2010:複数のソリューション、1つの共有C#プロジェクトファイル/ GUID
- 7. 複数のドメインと1つの仮想ホスト|ワイルドカードホスト(共有ホスティング)?
- 8. クラスとメソッドの間で変数を共有する
- 9. 複数のUIViewControllersの間で1つのストーリーボードシーンを共有する方法
- 10. 複数のnode.js HTTPプロセス間で1つのポートを共有する
- 11. 1つのチャンクを複数のDB領域で共有できますか?
- 12. タイムラインに複数のアクションを1つのページで共有できますか?
- 13. 複数のコントローラ間でのメソッドの共有C#MVC4
- 14. 複数のターゲット間で共有される時計アプリ
- 15. 複数のプロジェクトとソリューション間で共有されるNuGetパッケージ
- 16. Pythonで2つのクラス間で変数を共有する
- 17. 複数のパラメータを持つ1つのメソッドまたは1つのパラメータを持つ複数のメソッド?
- 18. 複数のコンポジットWPFアプリケーションをまとめて1つのシェルを共有する
- 19. 豚:1つのクラスの複数のUDF
- 20. 複数のウェブサイトにチェックアウトセッションを共有させるための優先メソッドとは
- 21. ggplot:1つの色/クラスの複数行
- 22. 1つのバッファを共有する - スレッドセーフ
- 23. ユーザーグループに表示されないナビゲーションリンクの1つ - 共有ポイント
- 24. 3D 1つのクラスの複数のボタンに触れる
- 25. Ruby:共通の変数とメソッドをスクリプトセットで共有する
- 26. 複数のクラス間でインスタンス化された変数を共有する最も良い方法は?
- 27. 複数のサイト間でユーザーアカウントを共有
- 28. 複数のイオンプロジェクト間でノードモジュールを共有
- 29. Eclipseプロジェクト間で共有されるクラスのパッケージプライベートフィールドへのアクセス
- 30. 複数のスレッドで共有されるHadoopのMapperオブジェクトですか?
一つのことは、少人数のクラスを作っているのを恐れてはいけないように。時には、人々はクラスが "もの"の束を保持する必要があるという気持ちを得る。しかし、それはちょうど "構文"です。その有用な場合は、その中にただ一つのものを持つクラスを作る。それとも何もない!ルールはありません。 –
1つの有用なメソッドでそれぞれN個のクラスを持ち、1つのクラスよりもわかりやすい名前を持ちます。 – sal