たとえば、から派生しManYouCanHit
た 2 つのクラスRichMan
とのアダプタ クラスがあるとします。そして、またはのインスタンスにのみアクセスできますTaxiDriver
Person
RichMan
TaxiDriver
public interface IManYouCanHit
{
bool CanIHitThisGuy;
}
public class ManYouCanHit : IManYouCanHit
{
private enum ManType
{
Rich = 0,
TaxiDriver = 1
}
private RichMan richMan;
private TaxiDriver driver;
private ManType type;
public Object ManReference
{
get
{
if(this.type == ManType.Rich)
{
return this.richMan;
}
else
{
return this.driver;
}
}
}
public bool CanIHitThisGuy
{
get{
bool canHit = true;
if(this.type == ManType.RichMan)
{
canHit = false;
}
return canHit;
}
}
public ManYouCanHit(Person someone)
{
if(someone is RichMan)
{
this.richMan = someone;
this.type = ManType.Rich;
}
else if(someone is TaxiDriver)
{
this.driver = someone;
this.type = ManType.TaxiDriver;
}
else
{
// throw an error
}
}
}
実際のロジックは例よりも複雑です。実装するプロパティとメソッドが多数あります。CanIHitThisGuy
2 つのオブジェクトを 1 つのアダプターにラップしても問題ありませんか? 他にどのようなパターンに従うことができますか?
このデザインの良し悪しは?アドバイスをお願いできますか?
経由で元のオブジェクトを公開する必要がありますManReference
か?