↓AbstractFactoryパターン // 予約、予約取消のためのHTTPリクエストを生成するFactory public abstract class AbstractHttpWebRequestFactory { public abstract HttpWebRequest CreateReserveBookRequest(Book book); public abstract HttpWebRequest CreateCancelReservationRequest(Book book); }
■具象実装
// 某図書館のインターネット予約アカウント // 具象実装に図書の予約、予約図書のキャンセル関連のメソッドはひとつもありません。 // ただ、適切なAbstractHttpWebRequestFactoryを生成するだけです。 public class ConcreteAccount : Account { // 適切なAbstractHttpWebRequestFactoryを生成する。 protected override AbstractHttpWebRequestFactory CreateHttpWebRequestFactory() { return new ConcreteHttpWebRequestFactory(this) } }
// 某図書館用のHTTPリクエストを生成するFactory public class ConcreteHttpWebRequestFactory : AbstractHttpWebRequestFactory { public abstract HttpWebRequest CreateReserveBookRequest(Book book) { return new HttpWebRequest("http://xxxxxx/reserve-cgi?type=0&id=xxxx&pass=xxxx"); } public abstract HttpWebRequest CreateCancelReservationRequest(Book book) { return new HttpWebRequest("http://xxxxxx/reserve-cgi?type=1&id=xxxx&pass=xxxx"); } }