工厂方法模式
概述
在软件系统中,经常面临着“某个对象”的创建工作,由于需求的变化,这个对象的具体实现经常面临着剧烈的变化,但是它却拥有比较稳定的接口。如何应对这种变化?提供一种封装机制来隔离出“这个易变对象”的变化,从而保持系统中“其它依赖该对象的对象”不随着需求的改变而改变?这就是要说的Factory Method模式了。
意图
定义一个用户创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。
生活中的例子
工厂方法定义一个用于创建对象的接口,但是让子类决定实例化哪个类。压注成型演示了这种模式。塑料玩具制造商加工塑料粉,将塑料注入到希望形状的模具中。玩具的类别(车,人物等等)是由模具决定的。
工厂方法解说
在工厂方法模式中,核心的工厂类不再负责所有产品的创建,而是将具体创建工作交给子类去做。这个核心类仅仅负责给出具体工厂必须实现的接口,而不接触哪一个产品类被实例化这种细节。这使得工厂方法模式可以允许系统在不修改工厂角色的情况下引进新产品。在Factory Method模式中,工厂类与产品类往往具有平行的等级结构,它们之间一一对应。
zmo_xu在这里举一个简单的例子:核心工厂就好比KFC的总店,其不在负责鸡块,汉堡的生成,而是交给加盟的分店去生成,总店(核心类)仅仅负责给出分店加工食品所必须经过的步骤(必须实现的接口)而不基础食品制作(实例化).这样在不修改总店的情况下就可以直接接受新的加盟分店[不知道这样理解行得通不呵呵]
现在我们考虑一个日志记录的例子(这里我们只是为了说明Factory Method模式,实际项目中的日志记录不会这么去做,也要比这复杂一些)。假定我们要设计日志记录的类,支持记录的方法有FileLog和EventLog两种方式。在这里我们先不谈设计模式,那么这个日志记录的类就很好实现了:
[未完待续]
分享到:
相关推荐
设计模式全解 设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。毫无疑问,设计模式于己于他人于系统都是多...
在C#中,常见的设计模式包括单例模式(确保类只有一个实例)、工厂模式(提供创建对象的接口)、观察者模式(定义对象间的一对多依赖关系)、装饰器模式(动态地给对象添加新的行为)和策略模式(定义一系列算法,并...
设计模式是软件工程中的最佳实践,23种设计模式包括工厂模式、单例模式、装饰者模式等,这份文档详细介绍了这些模式的概念、应用场景和实现方式,对提升代码质量和可维护性大有裨益。 7. **java虚拟机详解_免费....
熟练掌握常见的设计模式,如单例、工厂、建造者、装饰者、适配器、观察者、策略、模板方法等,这些是解决实际问题的常用工具,体现了良好的代码组织和设计能力。 五、Spring框架 作为企业级应用开发的主流框架,...
最后,设计模式是软件工程中的重要概念,"c#语法解析和设计模式"可能详细阐述了一些常见设计模式在C#中的实现,如工厂模式、单例模式、观察者模式、装饰器模式、策略模式等。设计模式提供了解决特定问题的通用解决...
- **Struts2**:是一款基于MVC设计模式的Web应用框架,它提供了一套完整的机制来帮助开发者构建结构清晰、易于维护的Web应用。 - **Spring**:是一个轻量级的Java开发框架,它主要通过依赖注入(DI)和面向接口编程...
#### JS设计模式全解 - **定义**:在软件工程中,设计模式是一系列经过验证的解决方案,用于解决常见的设计问题。 - **JS常用设计模式**:包括工厂模式、单例模式、观察者模式等。 - **应用场景**:改善代码的可读性...
7. **设计模式**:项目中可能会使用到单例模式、工厂模式、观察者模式等经典设计模式,以提高代码的可读性和可维护性。 8. **异常处理**:了解如何在代码中正确地捕获和处理异常,确保程序的稳定运行。 9. **项目...
JS 设计模式全解 - **知识点介绍**:这部分资料专注于 JavaScript 设计模式的学习,可能包括但不限于单例模式、工厂模式、观察者模式、适配器模式等多种常见的设计模式。通过学习这些模式,开发者可以更好地组织和...