版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/lwwl12/article/details/82021615
创建型设计模式提供了一种灵活的创建对象方式,同时隐藏了创建的逻辑。创建型设计模式包括5种:工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式。
5种模式简介
工厂模式:创建某一类对象
抽象工厂模式:创建多个种类的对象
单例模式:维护全局唯一对象
建造者模式:拼接各个元素组装成一个对象
原型模式:从现有原型对象拷贝产生对象
工厂模式
工厂模式中工厂类提供一个统一的创建对象方法。
在开发中经常需要将日志输出,日志可以输出到控制台、文本文件、数据库、消息队列或者通过接口输出到其他系统。采用工厂模式设计一个日志输出工厂。
// 日志抽象类
public abstract class AbstractLogger
{
public abstract void write(string log);
}
// 控制台日志记录
class ConsoleLogger : AbstractLogger
{
public override void write(string log)
{
Console.WriteLine($"{DateTime.Now:yyyy-MM-dd HH:mm:ss} {log}");
}
}
// 文件日志记录
class TXTLogger : AbstractLogger
{
public override void write(string log)
{
File.WriteAllText("log.txt", $"{DateTime.Now:yyyy-MM-dd HH:mm:ss} {log}");
}
}
// 日志工厂
public class LoggerFactory
{
public static AbstractLogger getLogger(string name)
{
if (name.Equals("console"))
{
return new ConsoleLogger();
}
else
if (name.Equals("txt"))
{
return new TXTLogger();
}
return null;
}
}
// 测试
static void Main(string[] args)
{
var logger= LoggerFactory.getLogger("console");
logger.write("this is Factory Pattern test");
logger = LoggerFactory.getLogger("txt");
logger.write("this is Factory Pattern test");
}
抽象工厂模式
抽象工厂通过一个超级工厂创建普通工厂,由普通工厂创建对象。
在工厂模式中实现了一个日志输出工厂,但是这个日志输出工厂功能太单一,我们需要更丰富的功能。现在来通过抽象工厂模式改造日志输出工厂,我们需要能够输出调试信息、提示信息、错误信息,而且需要能够输出到控制台、文本文件、数据库、消息队列或者其他系统。