设计模式——创建型

版权声明:本文为博主原创文章,转载请注明出处。 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");
        }

抽象工厂模式

抽象工厂通过一个超级工厂创建普通工厂,由普通工厂创建对象。

在工厂模式中实现了一个日志输出工厂,但是这个日志输出工厂功能太单一,我们需要更丰富的功能。现在来通过抽象工厂模式改造日志输出工厂,我们需要能够输出调试信息、提示信息、错误信息,而且需要能够输出到控制台、文本文件、数据库、消息队列或者其他系统。

猜你喜欢

转载自blog.csdn.net/lwwl12/article/details/82021615