私はいくつかの太いインターフェイスがあるとします。これは変更できません。また、私はいくつかのメソッドを使用したいと思ういくつかのクライアントクラスを持っています。どのようにインターフェイスの分離原理を達成するために、この状況のためのアダプタパターンを実装することができますか?adapternパターンを実装することでfatインターフェイスをどのように分離できますか?
1
A
答えて
9
これは非常に簡単です。
interface IAmFat
{
void Method1();
void Method2();
...
void MethodN();
}
interface IAmSegregated
{
void Method1();
}
class FatAdapter : IAmSegregated
{
private readonly IAmFat fat;
public FatAdapter(IAmFat fat)
{
this.fat = fat;
}
void IAmSegregated.Method1()
{
this.fat.Method1();
}
}
0
アダプターは本当に適切なツールではありません。 2つの互換性のないインターフェースを互いに適合させることによって話すことができるように設計されています。この場合、エンドユーザーに異なる機能のサブセットを公開する必要があります。この場合、facadeを使用します。
class Fat{
public string A();
public int B();
.
public void EatMeat()
.
public void Z();
}
class JennyCraig{
private Fat f = Fat();
public string A(){
return f.A();
}
public void Z(){
return f.Z();
}
class Atkins{
public Fat f = Fat();
public void EatMeat(){
return f.EatMeat();
}
}
関連する問題
- 1. インターフェイス分離フレームワークとパターン
- 2. WCFでインターフェイスと実装を分離する必要がありますか?
- 3. 実装からインターフェイスを分離する方法
- 4. クラスが多くのインターフェイスを実装していることをどのようにテストできますか?
- 5. サブクラスでComparableインターフェイスを実装すると、Collections.sort()をどのように使用できますか?
- 6. どのようにIEnumeratorインターフェイスを実装しますか?
- 7. 自分のジェネリックコレクションをJavaでどのように実装できますか?
- 8. IronPythonでインターフェイスを実装するにはどうすればよいですか?
- 9. GLSLでポイントからラインセグメントまでの距離をどのように実装できますか?
- 10. どのようにC#でIRandomAccessStreamを実装できますか?
- 11. ZedGraphでどのようにスプリットペインを実装できますか?
- 12. どのようにWebMethodsでDatatablesを実装できますか?
- 13. どのようにインターフェイスを実装している場合、このような
- 14. DelphiでLevenshtein距離をどのように実装しますか?
- 15. この式をJavaでどのように実装できますか?
- 16. これでバイナリツリーをどのように実装しますか?
- 17. c#app:JSONインターフェイスを実装することは可能ですか?
- 18. どのようにアコーディオンスタイルのメニューを実装できますか?
- 19. インターフェイスが実装されないようにすることはできますか?
- 20. FATイベントをイベントソースとすることはできますか?
- 21. どのように値を分離するのですか?
- 22. Typescriptでは、どのようにして、オーバーロードでベア機能のインターフェイスを実装できますか?
- 23. Arangodbとどのように距離を置くことができますか?
- 24. UIImage/CIImageでどのように単一の色を分離できますか?
- 25. 私はどのように入力からデータを分離することができます
- 26. ノードjsでこのパターンを実装するにはどうすればよいですか?
- 27. C#でこの並列パターンを実装するにはどうすればよいですか?
- 28. インターフェイスをC#で.hファイルに実装できますか?
- 29. インターフェイスで抽象度のレベルを分離するにはどうすればよいですか?
- 30. sonarQubeで実行分析機能とパブリッシングレポートを分離するにはどうすればよいですか?
+1誰もがしたいんが(そのことについてまたは隔離)脂肪ことです:( – jgauffin
だから私はまたIAmFatを実装するクラスを必要とし、そのインスタンスはFatAdapterコンストラクタに注入されるのですか? –
いいえ、あなたの脂肪の場合クラスに静的メソッドがある場合は、それをまったく注入する必要はありません。単純に 'FatAdapter'から直接呼び出すことができます。 – Steven