Extract Interfaceとはクラスのメソッドやプロパティをインターフェイス化することです。
そうすることによって、複数のクラスにまたがった共通の機能をひとつのインターフェイスとしてまとめることができます。
*インターフェイスと継承について
複数のクラスにまたがる共通項目を抜き出すときインターフェイスにするか、継承にするかは難しい問題です。
おおまかな方針としては、複数のクラスがすべて共通の要素(Vehicleに対してTruck、Carなど)のときは継承を、
複数のクラスが全く関係がないが、共通の要素を持っている(UserとBookが共通のGetDataCreatedDateメソッドを持っている)ときはインターフェイスを使用するということが良いようです。
リファクタリング前:
public class Person
{
public string GetXml()
{
// return XML data
}
}
public class Book
{
public string GetXml()
{
// return XML data
}
}
リファクタリング後:
//共通のGetXmlというメソッドをインターフェイス化する
public interface ITransformableToXml
{
string GetXml();
}
public class Person : ITransformableToXml
{
public string GetXml()
{
// return XML data
}
}
public class Book : ITransformableToXml
{
public string GetXml()
{
// return XML data
}
}
|
Copyright(c) 2012 WoodenSoldier Software |