MST

星途 面试题库

面试题:C#中工厂模式的应用场景及实现

请描述在C#中工厂模式常见的应用场景,并给出一个简单的代码示例,实现使用工厂模式创建不同类型的图形(如圆形、矩形)对象。
33.1万 热度难度
编程语言C#

知识考点

AI 面试

面试题答案

一键面试

工厂模式常见应用场景

  1. 对象创建过程复杂时:当创建对象需要进行一系列复杂的初始化操作,如数据库连接、配置文件读取等,使用工厂模式可以将这些复杂操作封装在工厂类中,使客户端代码更简洁。
  2. 根据不同条件创建不同类型对象时:比如根据用户的权限等级创建不同权限的用户对象,或者根据不同的操作系统创建对应的界面组件等。
  3. 创建对象的逻辑可能变化时:将对象创建逻辑封装在工厂类中,若逻辑发生变化,只需修改工厂类,而不影响客户端代码。

代码示例

  1. 定义图形接口
public interface IShape
{
    void Draw();
}
  1. 实现具体图形类
    • 圆形
public class Circle : IShape
{
    public void Draw()
    {
        Console.WriteLine("绘制圆形。");
    }
}
- **矩形**
public class Rectangle : IShape
{
    public void Draw()
    {
        Console.WriteLine("绘制矩形。");
    }
}
  1. 创建工厂类
public class ShapeFactory
{
    public IShape CreateShape(string shapeType)
    {
        switch (shapeType.ToLower())
        {
            case "circle":
                return new Circle();
            case "rectangle":
                return new Rectangle();
            default:
                return null;
        }
    }
}
  1. 客户端使用
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();
        }
    }
}