Extract Interface(インターフェイスの抽出)


HOME > プログラミング > リファクタリング > Extract Interface リファクタリング プログラムの体質改善テクニック

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