sự hiểu biết của tôi về Factory Method Pattern là (Đúng tôi nếu tôi đã sai lầm)Factory Method Pattern rõ
Factory Method Pattern
"Factory Method cho phép khách hàng để các đại biểu việc tạo ra sản phẩm (Tạo bản sao) cho lớp con ".
Có hai trường hợp mà chúng tôi có thể tạo mô hình Phương thức nhà máy.
(i) Khi khách hàng bị hạn chế tạo sản phẩm (Instance).
(ii) Có nhiều sản phẩm available.But một quyết định phải được thực hiện mà dụ sản phẩm cần phải được trả lại.
Nếu bạn muốn tạo Tóm tắt Phương pháp mô hình
- Bạn cần có sản phẩm trừu tượng
- bê tông Sản phẩm
- Factory Method để trả lại sản phẩm thích hợp.
Ví dụ:
public enum ORMChoice
{
L2SQL,
EFM,
LS,
Sonic
}
//Abstract Product
public interface IProduct
{
void ProductTaken();
}
//Concrete Product
public class LinqtoSql : IProduct
{
public void ProductTaken()
{
Console.WriteLine("OR Mapping Taken:LinqtoSql");
}
}
//concrete product
public class Subsonic : IProduct
{
public void ProductTaken()
{
Console.WriteLine("OR Mapping Taken:Subsonic");
}
}
//concrete product
public class EntityFramework : IProduct
{
public void ProductTaken()
{
Console.WriteLine("OR Mapping Taken:EntityFramework");
}
}
//concrete product
public class LightSpeed : IProduct
{
public void ProductTaken()
{
Console.WriteLine("OR Mapping Taken :LightSpeed");
}
}
public class Creator
{
//Factory Method
public IProduct ReturnORTool(ORMChoice choice)
{
switch (choice)
{
case ORMChoice.EFM:return new EntityFramework();
break;
case ORMChoice.L2SQL:return new LinqtoSql();
break;
case ORMChoice.LS:return new LightSpeed();
break;
case ORMChoice.Sonic:return new Subsonic();
break;
default: return null;
}
}
}
**Client**
Button_Click()
{
Creator c = new Creator();
IProduct p = c.ReturnORTool(ORMChoice.L2SQL);
p.ProductTaken();
}
là sự hiểu biết của tôi về Nhà máy Phương pháp là đúng?
btw, sử dụng một 'enum' như thế này là khả năng dẫn đến không cần thiết' switch'-ing. Trong những trường hợp như vậy, tôi thích sử dụng một chức năng khác cho mỗi lựa chọn. –