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 }
// 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); }