Factory Method Pattern (工厂方法模式)
定义: 又称工厂模式,也叫虚拟构造器模式或者多态工厂模式,属于类的创建型模式。在工厂方法模式中,
父类负责定义创建对象的公共接口,而子类则负责生成具体的对象,这样做的目的是将类的实例化
操作延迟到子类中完成,即由子类来决定究竟该实例化哪一个类。
类与对象的关系:
Product: 产生角色
定义产品的接口
ConcreteProduct: 真实的产品
实现接口Product的类
Creator: 工厂角色
声明工厂方法,返回一个产品
ConcreteCreator: 真实的工厂
实现FactoryMethod工厂方法,由客户调用,返回一个产品的实例
应用情景:
1, 类不知道自己要创建哪一个对象
2, 类用它的子类来指定要创建哪个对象
3, 客户需要清楚创建了哪一个对象
产生角色
package www.libinxuan.mobile;
//手机接口(产生角色)
public interface Mobile {
public void call();
}
真实的产品
package www.libinxuan.mobile;
/**
* 真实的产品
* @author Administrator
*
*/
public class Motorola implements Mobile {
@Override
public void call() {
System.out.println("摩托罗拉手机");
}
}
package www.libinxuan.mobile;
public class Nokia implements Mobile {
@Override
public void call() {
System.out.println("诺基亚手机");
}
}
工厂角色
package www.libinxuan.mobile;
//手机工厂接口
public interface MobileFactory {
public Mobile produceMobile();
}
真实的工厂
package www.libinxuan.mobile;
/**
* 真实的工厂
* @author Administrator
*
*/
public class NokiaFactory implements MobileFactory {
@Override
public Mobile produceMobile() {
System.out.print("诺基亚工厂制造了");
return new Nokia();
}
}
package www.libinxuan.mobile;
/**
* 真实的工厂
* @author Administrator
*
*/
public class MotorolaFactory implements MobileFactory {
@Override
public Mobile produceMobile() {
System.out.print("摩托罗拉工厂制造了");
return new Motorola();
}
}
测试
package www.libinxuan.mobile;
public class Client {
public static void main(String[] args){
MobileFactory mf;
Mobile m;
mf = new MotorolaFactory();
m = mf.produceMobile();
m.call();
mf = new NokiaFactory();
m = mf.produceMobile();
m.call();
}
}
分享到:
相关推荐
今天我们要探讨的是设计模式中的一个经典成员——工厂方法模式(Factory Method Pattern)。工厂方法模式是创建型设计模式的一种,它提供了一种创建对象的最佳方式。 ### 一、什么是工厂方法模式? 工厂方法模式...
1. 抽象工厂(Abstract Factory):这是工厂方法模式的核心接口,它声明了一组用于创建产品的公共方法。抽象工厂通常为抽象类或接口。 2. 具体工厂(Concrete Factory):实现了抽象工厂接口,提供具体的产品实例。...
它们都是由不同的厂家生产的,这就是工厂方法模式(FactoryMethod)与前面所说的简单工厂模式(SimpleFactory)的差别。 实例: 多文档系统。我已经用C#的源码编程了:请下载Factory Method Patter.rar
在"FactoryMethodPattern"的压缩包文件中,我们可以预期包含以下内容: - 示例代码:展示了如何在Swift或Objective-C中实现工厂方法模式。可能包含抽象产品接口、具体产品类、抽象工厂接口和具体工厂类的定义,以及...
工厂方法模式(Factory Method Pattern)是一种创建型设计模式,它定义了一个用于创建对象的接口,但由子类决定实例化哪一个具体类。这样,客户端代码就不需要知道具体的类是什么,只需通过工厂接口获取对象。 工厂...
NULL 博文链接:https://rich8w.iteye.com/blog/464344
学习Java中的工厂方法模式,探索示例、用途、好处以及它如何增强代码的灵活性和可维护性。 **二、别名** * Virtual Constructor **三、Factory Method设计模式的意图** 使用工厂方法模式定义一个用于创建对象的...
通过阅读和分析源文件`FactoryMethod`,我们可以深入理解工厂方法模式的实现细节,例如工厂类如何创建产品对象,产品对象如何通过接口或抽象类进行交互等。这对于学习和应用设计模式,以及提高代码的可维护性和扩展...
在实际应用中,工厂方法模式有以下优点: - **封装变化**:当需要添加新产品或更换产品实现时,只需要增加新的具体产品类和对应的具体工厂类,无须修改原有代码,符合开闭原则。 - **多态性**:通过工厂方法,客户端...
工厂方法模式(Factory Method Pattern) 观察者模式(Observer Pattern) 建造者模式(Builder Pattern) 解释器模式(Interpreter Pattern) 命令模式(Command Pattern) 模板方法模式(Template Method Pattern) 桥接模式...
工厂方法模式(Factory Method Pattern)是设计模式中的创建型模式之一,主要解决对象创建过程中的复杂性问题。在软件工程中,当一个类不知道它所必须创建的对象的类的时候,它就不会实例化对象,而是使用一个工厂...
工厂方法模式(Factory Method Pattern)是面向对象的设计模式,它定义了一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类。这样,工厂方法将实例化操作推迟到子类中,实现了对类的抽象,提高了代码的...
工厂方法模式(Factory Method Pattern)是面向对象设计模式的一种,它在实际开发中有着广泛的应用。本项目通过工厂方法模式重构简易计算器,旨在展示这种模式在实现基本计算功能时的优势。 首先,我们要理解工厂...
工厂方法模式(Factory Method Pattern)是一种常用的面向对象设计模式,属于创建型模式之一。它提供了一种创建对象的最佳方式。在工厂方法模式中,我们定义了一个用于创建对象的接口,但让子类决定实例化哪一个类。...
在软件设计模式中,工厂方法模式(Factory Method Pattern)和抽象工厂模式(Abstract Factory Pattern)是两种常用的创建型设计模式,它们都属于“工厂”家族,但有着不同的应用场景和目标。 工厂方法模式的核心...
工厂方法模式(Factory Method Pattern)是设计模式中的创建型模式之一,它定义了一个创建对象的接口,但允许子类决定实例化哪一个类。这个模式使类的实例化延迟到了子类,也就是所谓的“多态性工厂”。在Java中,...
回到提供的代码文件,`FactoryMethodPattern.cpp`和`FactoryMethodPattern.h`可能是实现工厂方法模式的C++代码。通常,`.cpp`文件包含具体的函数实现,而`.h`文件则定义了相关的类和接口。在这些文件中,我们可能会...
5、工厂方法模式FACTORY METHOD PATTERN 6、抽象工厂模式ABSTRACT FACTORY PATTERN 7、门面模式FACADE PATTERN 8、适配器模式ADAPTER PATTERN 9、模板方法模式TEMPLATE METHOD PATTERN 10、建造者模式BUILDER ...
在“DesignPattern_FactoryMethodPattern”这个压缩包中,我们可以预期找到以下组成部分: 1. **抽象工厂(AbstractFactory)**:这是一个协议或抽象类,定义了创建对象的接口。在Objective-C中,通常会用到`@...