Example #1
0
        static void Main(string[] args)
        {
            #region Static Factory Method Pattern
            // use static method
            ILogger_static_factory logger_static_factory = LoggerFactory_static_factory.Create(LoggerType.DB);

            #endregion

            #region Simple Factory Pattern
            // no using static method
            var factory_simple  = new LoggerFactory_simple_factory();
            var dbLogger_simple = factory_simple.CreateDbLogger();

            #endregion

            #region Factory Method Pattern

            LogFactory logger = new XmlLogFactory();
            logger.Log("Log something");

            LogFactory logger_s = LogFactory.GetLogger();
            logger_s.Log("Log somethinf");

            #endregion


            #region Abstract Factory Patthern

            AbstractFactory factory = new ConcreteFactory1();
            ProductA        prodA   = factory.CreateProductA();
            ProductB        prodB   = factory.CreateProductB();

            #endregion
        }
Example #2
0
        // Static Factory Method
        // loggertype는 enum으로 하는 것이 일반적이다.

        public static ILogger_static_factory Create(LoggerType loggerType)
        {
            ILogger_static_factory logger = null;

            switch (loggerType)
            {
            case LoggerType.DB:
                logger = new DbLogger_static_factory();
                break;

            case LoggerType.XML:
                logger = new XmlLogger_static_factory();
                break;

            case LoggerType.JSON:
                logger = new JsonLogger_static_factory();
                break;

            default:
                throw new InvalidOperationException();
            }

            return(logger);
        }