设计模式:工厂方法模式(Factory Method)
2013-02-28 13:54
323 查看
作者:TerryLee 创建于:2005-12-09 出处:http://terrylee.cnblogs.com/archive/2006/01/04/310716.html 摘录于:2013-02-28
当一个类希望由它的子类来指定它所创建的对象的时候。
当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。
2. 工厂方法是可以带参数的。
3. 工厂的作用并不仅仅只是创建一个对象,它还可以做对象的初始化,参数的设置等。
2. Factory
Method模式通过面向对象的手法,将所要创建的具体对象的创建工作延迟到了子类,从而提供了一种扩展的策略,较好的解决了这种紧耦合的关系。
[b]结构图[/b]
意图
定义一个用户创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。适用性
当一个类不知道它所必须创建的对象的类的时候。当一个类希望由它的子类来指定它所创建的对象的时候。
当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。
实现代码
现在我们考虑一个日志记录的例子假定我们要设计日志记录的类,支持记录的方法有FileLog和EventLog两种方式。在这里我们先不谈设计模式,那么这个日志记录的类就很好实现了。using System; namespace Log { public abstract class Log { public abstract void Write(); } // EventLog类 public class EventLog : Log { public override void Write() { Console.WriteLine("EventLog Write Success!"); } } // FileLog类 public class FileLog : Log { public override void Write() { Console.WriteLine("FileLog Write Success!"); } } } namespace LogFactory { using Log; // LogFactory类 public abstract class LogFactory { public abstract Log Create(); } // EventFactory类 public class EventFactory : LogFactory { public override Log Create() { return new EventLog(); } } // FileFactory类 public class FileFactory : LogFactory { public override Log Create() { return new FileLog(); } } } namespace Customer { using Log; using LogFactory; public class Program { public static void Main(string[] args) { LogFactory factory = new EventFactory(); Log log = factory.Create(); log.Write(); Console.Read(); } } }
实现要点
1. Factory Method模式的两种情况:一是Creator类是一个抽象类且它不提供它所声明的工厂方法的实现;二是Creator是一个具体的类且它提供一个工厂方法的缺省实现。2. 工厂方法是可以带参数的。
3. 工厂的作用并不仅仅只是创建一个对象,它还可以做对象的初始化,参数的设置等。
效果
1. 用工厂方法在一个类的内部创建对象通常比直接创建对象更灵活。2. Factory
Method模式通过面向对象的手法,将所要创建的具体对象的创建工作延迟到了子类,从而提供了一种扩展的策略,较好的解决了这种紧耦合的关系。
相关文章推荐
- IOS设计模式浅析之工厂方法模式(Factory Method)
- 设计模式——工厂方法模式(Factory Method)
- 设计模式 - 工厂方法模式(Factory Method)
- 设计模式之工厂方法模式(FactoryMethod)
- 【设计模式】 工厂方法模式(Factory Method)-最易懂的设计模式解析
- 设计模式——工厂方法模式(Factory Method)
- Java设计模式-工厂方法模式(Factory Method)
- .Net设计模式学习笔记(五):工厂方法模式(Factory Method)
- IOS设计模式浅析之工厂方法模式(Factory Method)
- 【设计模式】Factory Method Pattern——工厂方法模式
- .NET设计模式:工厂方法模式(Factory Method)
- 艾伟_转载:.NET设计模式:工厂方法模式(Factory Method)
- 23种设计模式之-----工厂方法模式(Method Factory pattern)
- 面向对象设计模式纵横谈:Factory Method 工厂方法模式(笔记记录)
- java设计模式1--工厂方法模式(Factory Method)
- .NET设计模式:工厂方法模式(Factory Method)BY Terrylee
- JAVA设计模式(1) —<创建型>工厂方法模式(Factory Method)
- 设计模式之一 工厂方法模式(Factory Method)
- 设计模式之二 工厂方法模式 Factory Method