1. What是C#工厂方法? C#工厂方法是一种设计模式,它通过创建具有相同基类的对象来实现代码的重用和灵活性。
2. Why使用C#工厂方法? 使用C#工厂方法有以下好处: - 降低了代码的耦合性,让代码更易于扩展和修改; - 隐藏了对象的创建细节,将对象的创建从客户端代码中分离出来; - 能够让客户端代码更简洁,并且提供了更好的灵活性。
3. Who可以使用C#工厂方法?1 任何使用C#语言的开发人员都可以使用C#工厂方法。
4. Where可以使用C#工厂方法? C#工厂方法可以应用于任何需要创建对象的场景,包括但不限于: - 数据库操作; - 用户界面组件; - 游戏开发; - 日志系统。
5. When使用C#工厂方法? 使用C#工厂方法的最佳时机是当你需要创建多个对象具有相同的基类,或者当你需要通过隐藏对象的创建细节来提供更好的灵活性时。
6. How使用C#工厂方法? 使用C#工厂方法分为以下几个步骤: - 定义一个基类; - 定义一个抽象工厂类,其中包含一个抽象的方法来创建对象; - 定义具体的工厂类,实现抽象工厂类中的抽象方法,并根据需要去实例化具体对象; - 在客户端代码中使用具体的工厂类创建对象,而不是直接实例化具体对象。
抽象产品角色
代码语言:javascript复制 //鼠标抽象类
public abstract class Mouse
{
public abstract void Print();
}
具体产品角色
代码语言:javascript复制 //戴尔鼠标
public class DellMouse : Mouse
{
public override void Print()
{
Console.WriteLine("生产了一个Dell鼠标");
}
}
代码语言:javascript复制 //惠普鼠标
public class HPMouse : Mouse
{
public override void Print()
{
Console.WriteLine("生产了一个惠普鼠标");
}
}
代码语言:javascript复制 //联想鼠标
public class LenovoMouse : Mouse
{
public override void Print()
{
Console.WriteLine("生产了一个联想鼠标");
}
}
抽象工厂角色
代码语言:javascript复制 /// <summary>
/// 鼠标工厂抽象类
/// </summary>
public abstract class MouseFactory
{
public abstract Mouse CreateMouse();
}
具体工厂角色
代码语言:javascript复制 //戴尔鼠标工厂
public class DellMouseFactroy : MouseFactory
{
public override Mouse CreateMouse()
{
return new DellMouse();//在具体的工厂中实例化产品
}
}
代码语言:javascript复制 //惠普鼠标工厂
public class HpMouseFactory : MouseFactory
{
public override Mouse CreateMouse()
{
return new HPMouse();//在具体的工厂中实例化产品
}
}
代码语言:javascript复制 /// <summary>
/// 联想鼠标工厂
/// </summary>
public class LenovoMouseFactory : MouseFactory
{
public override Mouse CreateMouse()
{
return new LenovoMouse();//在具体的工厂中实例化产品
}
}
运行测试
代码语言:javascript复制 //生产一个戴尔鼠标
MouseFactory dellMouseFactory = new DellMouseFactroy();
_04工厂模式.Mouse dellMouse = dellMouseFactory.CreateMouse();
dellMouse.Print();
//生产一个惠普鼠标
MouseFactory hpMouseFactory = new HpMouseFactory();
_04工厂模式.Mouse hpMouse = hpMouseFactory.CreateMouse();
hpMouse.Print();
//生产一个联想鼠标
LenovoMouseFactory lenovoMouseFactory = new LenovoMouseFactory ();
_04工厂模式.Mouse lenovoMouse = lenovoMouseFactory.CreateMouse();
lenovoMouse.Print();
源码下载:https://gitee.com/weilong2020/csharp_23_-design-patterns.git