내 제품 공장공장 패턴
public interface IProductFactory
{
void Drive(int miles);
}
내 자동차 공장
public interface IVehicleFactory
{
IProdctFactory GetVehicle(string Vehicle);
}
제품 자전거
class Bike:IProdctFactory
{
public void Drive(int miles)
{
Console.WriteLine("Drive the Bike : " + miles.ToString() + "km");
}
}
제품 스쿠터
class Scooter:IProdctFactory
{
public void Drive(int miles)
{
Console.WriteLine("Drive the Scooter : " + miles.ToString() + "km");
}
}
,
제품 자동차
class Car:IProdctFactory
{
public void Drive(int miles)
{
Console.WriteLine("Drive the Car : " + miles.ToString() + "km");
}
}
제품 지프
class Jeep:IProdctFactory
{
public void Drive(int miles)
{
Console.WriteLine("Drive the Jeep : " + miles.ToString() + "km");
}
}
두 휠러 공장
public class TwoWheelerFactory : IVehicleFactory
{
public IProdctFactory GetVehicle(string Vehicle)
{
switch (Vehicle)
{
case "Scooter":
return new Scooter();
case "Bike":
return new Bike();
default:
throw new ApplicationException(string.Format("Vehicle '{0}' cannot be created", Vehicle));
}
}
}
4 휠러 공장
class FourWheelerFactory:IVehicleFactory
{
public IProdctFactory GetVehicle(string Vehicle)
{
switch (Vehicle)
{
case "Car":
return new Car();
case "Jeep":
return new Jeep();
default:
throw new ApplicationException(string.Format("Vehicle '{0}' cannot be created", Vehicle));
}
}
}
클라이언트
class Program
{
static void Main(string[] args)
{
IVehicleFactory twoWheelerfactory = new TwoWheelerFactory();
IProdctFactory scooter = twoWheelerfactory.GetVehicle("Scooter");
scooter.Drive(10);
IProdctFactory bike = twoWheelerfactory.GetVehicle("Bike");
bike.Drive(20);
IVehicleFactory fourWheelerFactory = new FourWheelerFactory();
IProdctFactory car = fourWheelerFactory.GetVehicle("Car");
car.Drive(100);
IProdctFactory jeep = fourWheelerFactory.GetVehicle("Car");
jeep.Drive(200);
Console.ReadKey();
}
}
두 개의 구체적인 차량 클래스 (TwoWheelerFactory, FourWheelerFactory)를 공장 패턴으로 사용하고 있습니까? 나는 추상 팩토리 패턴에 대해 많이 읽고 있지만
, 나는
? 아직도 :(누군가가 추상 팩토리 패턴으로 변환하는 데 도움이 수 무엇인지 확실하지 않다 나는
Design Patterns: Abstract Factory vs Factory Method
읽기및
Wikipedia에서http://www.dotnet-tricks.com/Tutorial/designpatterns/FUcV280513-Factory-Method-Design-Pattern---C
나는 IVehicleFactory가 당신에게주는 것을 이해하지 못합니다. 인스턴스 생성을 할 수있는 것처럼 보입니다. 또한 "드라이브"는 일반적인 공장 방법이 아닙니다. 전반적으로 이것은 매우 이상한 디자인처럼 보입니다. – BradleyDotNET
추신 : 나는 도울 수 없지만 'miles.ToString() + "km"'는 다소 틀린 것처럼 보입니다. 실제로 약 1.6 배 정도 떨어져 있습니다. 거리가 int가 아니어야 말할 것도없고. – Aron
'IProductFactory'는'Drive's ...와 같이 들리지 않습니다. –