工厂模式常见应用场景
- 对象创建过程复杂时:当创建对象需要进行一系列复杂的初始化操作,如数据库连接、配置文件读取等,使用工厂模式可以将这些复杂操作封装在工厂类中,使客户端代码更简洁。
- 根据不同条件创建不同类型对象时:比如根据用户的权限等级创建不同权限的用户对象,或者根据不同的操作系统创建对应的界面组件等。
- 创建对象的逻辑可能变化时:将对象创建逻辑封装在工厂类中,若逻辑发生变化,只需修改工厂类,而不影响客户端代码。
代码示例
- 定义图形接口
public interface IShape
{
void Draw();
}
- 实现具体图形类
public class Circle : IShape
{
public void Draw()
{
Console.WriteLine("绘制圆形。");
}
}
- **矩形**
public class Rectangle : IShape
{
public void Draw()
{
Console.WriteLine("绘制矩形。");
}
}
- 创建工厂类
public class ShapeFactory
{
public IShape CreateShape(string shapeType)
{
switch (shapeType.ToLower())
{
case "circle":
return new Circle();
case "rectangle":
return new Rectangle();
default:
return null;
}
}
}
- 客户端使用
class Program
{
static void Main()
{
ShapeFactory factory = new ShapeFactory();
IShape circle = factory.CreateShape("circle");
if (circle != null)
{
circle.Draw();
}
IShape rectangle = factory.CreateShape("rectangle");
if (rectangle != null)
{
rectangle.Draw();
}
}
}