私は、アクセスするには複数の異なるクラスが必要なメソッドが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. TFS:複数のプロジェクトで1つのDLLを共有する
- 3. 複数のファイルを1つの共有フォルダから別のフォルダ共有にコピー
- 4. Jenkins:1つの共有リソースを持つ複数のジョブ
- 5. 複数のangular.jsアプリ間で1つのサービスを共有
- 6. 複数のターゲットで1つの-swift.hを共有
- 7. 複数のサーバーのイベントと共有クラス
- 8. 複数のHTML5が1つのリストを共有する
- 9. 複数のGoogle +1の共有ボタン
- 10. C++クラスの複数のインスタンス間で共有されているタイマーカウンタの問題
- 11. 1つに情報を共有する複数のテーブル
- 12. 複数のクラスで共有されるヘルパーメソッドを定義する方法は?
- 13. VS2010:複数のソリューション、1つの共有C#プロジェクトファイル/ GUID
- 14. woocommerce複数のサブドメインに1つのipnを共有します。
- 15. 複数のホストが1つのドメイン名を共有します
- 16. 複数のドメインと1つの仮想ホスト|ワイルドカードホスト(共有ホスティング)?
- 17. クラスとメソッドの間で変数を共有する
- 18. クラス間でgetterメソッドを共有する
- 19. 1つのソリューション内でクラスを共有する
- 20. 複数のUIViewControllersの間で1つのストーリーボードシーンを共有する方法
- 21. 複数の共有リンクを複数の共有リンクに接続...
- 22. 複数のnode.js HTTPプロセス間で1つのポートを共有する
- 23. Fortranで複数のソースファイルから1つのライブラリにリンクする共有オブジェクト
- 24. 1つ以上の関数間で変数を共有する
- 25. クラスとメソッドの間で変数を共有
- 26. 複数のコントローラ間でのメソッドの共有C#MVC4
- 27. JAVA getクラス変数:複数のメソッドまたは1つのメソッド(スイッチあり)
- 28. 複数のプロジェクトとソリューション間で共有されるNuGetパッケージ
- 29. 複数のターゲット間で共有される時計アプリ
- 30. タイムラインに複数のアクションを1つのページで共有できますか?
一つのことは、少人数のクラスを作っているのを恐れてはいけないように。時には、人々はクラスが "もの"の束を保持する必要があるという気持ちを得る。しかし、それはちょうど "構文"です。その有用な場合は、その中にただ一つのものを持つクラスを作る。それとも何もない!ルールはありません。 –
1つの有用なメソッドでそれぞれN個のクラスを持ち、1つのクラスよりもわかりやすい名前を持ちます。 – sal