.net core 3.1 23种设计模式—工厂方法模式
工厂方法的就是解决简单工厂的缺点。
简单工厂的缺点是啥?
简单工厂如果要创建更多的对象,就要修改简单工厂的方法,这样恨比方便也很容易出错,一般工厂在人的印象当中不会轻易改变。
套路:在简单工厂的基础之上,再把工厂抽象化
上代码
public interface IDB
{
/// <summary>
/// 连接数据库的方法
/// </summary>
public void CreateDb();
}
public class Mysql : IDB
{
public void CreateDb()
{
Console.WriteLine("mysql连接成功!");
}
}
public class Oracle : IDB
{
public void CreateDb()
{
Console.WriteLine("Oracle连接成功!");
}
}
public class Sqlserver : IDB
{
public void CreateDb()
{
Console.WriteLine("Sqlserver连接成功!");
}
}
以上是对对象类的创建,都实现IDB接口,实现抽象化
下面是对工厂的创建
public interface IFactory
{
/// <summary>
/// 工厂创建对象的方法
/// </summary>
/// <returns></returns>
IDB CreateObject();
}
public class MysqlFactory : IFactory
{
public IDB CreateObject()
{
return new Mysql();
}
}
public class OracleFactory : IFactory
{
public IDB CreateObject()
{
return new Oracle();
}
}
public class SqlserverFactory : IFactory
{
public IDB CreateObject()
{
return new Sqlserver();
}
}
#region 工厂方法模式
IFactory ifactory = new MysqlFactory();
ifactory.CreateObject().CreateDb();
//IDB mysql =
#endregion
这下呢就方便扩展了,在创建新的对象呢,就实现接口,然后创建对应的工厂实现抽象工厂的方法
套路:
1. 将所有对象类抽象化(创建一个接口或抽象类)
2. 创建一个工厂接口
3. 把每一个对象创建一个工厂来实现这个工厂接口(就有点像总厂下面都有一个分厂一样)