1. 普通工厂模式
就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。
首先,创建二者的共同接口:
public interface Sender { public void Send(); }
其次,创建该接口的实现类:
public class MailSender implements Sender { @Override public void Send() { System.out.println("this is mailsender!"); } }
public class SmsSender implements Sender { @Override public void Send() { System.out.println("this is sms sender!"); } }
最后,建工厂类:
public class SendFactory { public Sender produce(String type) { if ("mail".equals(type)) { return new MailSender(); } else if ("sms".equals(type)) { return new SmsSender(); } else { System.out.println("请输入正确的类型!"); return null; } } }
我们来测试下:
public class FactoryTest { public static void main(String[] args) { SendFactory factory = new SendFactory(); Sender sender = factory.produce("sms"); sender.Send(); } }
输出:this is sms sender!
2. 多个工厂方法模式
是对普通工厂方法模式的改进,在普通工厂方法模式中,如果传递的字符串出错,则不能正确创建对象,而多个工厂方法模式是提供多个工厂方法,分别创建对象。
将上面的代码做下修改,改动下SendFactory类就行。
public class SendFactory { public Sender produceMail(){ return new MailSender(); } public Sender produceSms(){ return new SmsSender(); } }
测试类如下:
public class FactoryTest { public static void main(String[] args) { SendFactory factory = new SendFactory(); Sender sender = factory.produceMail(); sender.Send(); } }
输出:this is mailsender!
3. 静态工厂方法模式
将上面的多个工厂方法模式里的方法置为静态的,不需要创建实例,直接调用即可。
public class SendFactory { public static Sender produceMail(){ return new MailSender(); } public static Sender produceSms(){ return new SmsSender(); } }
测试类:
public class FactoryTest { public static void main(String[] args) { Sender sender = SendFactory.produceMail(); sender.Send(); } }
输出:this is mailsender!
总结:
总体来说,工厂模式适合:凡是出现了大量的产品需要创建,并且具有共同的接口时,可以通过工厂方法模式进行创建。在以上的三种模式中,第一种如果传入的字符串有误,不能正确创建对象,第三种相对于第二种,不需要实例化工厂类,所以,大多数情况下,我们会选用第三种——静态工厂方法模式。
相关推荐
在这个压缩包中,`FactoryMethod`可能包含了Java实现工厂方法模式的源代码示例。 设计模式是一种在特定场景下解决软件设计问题的通用、可重用的解决方案,它代表了最佳实践,被广泛应用于各种编程语言中。工厂方法...
今天我们要探讨的是设计模式中的一个经典成员——工厂方法模式(Factory Method Pattern)。工厂方法模式是创建型设计模式的一种,它提供了一种创建对象的最佳方式。 ### 一、什么是工厂方法模式? 工厂方法模式...
在软件设计模式中,工厂方法(Factory Method)和抽象工厂(Abstract Factory)是两种非常重要的创建型模式。它们主要用于解决对象实例化的问题,提供了一种封装对象创建过程的方法,使得代码更加灵活,易于扩展和...
《设计模式之——工厂方法(Factory Method)》 在软件工程中,设计模式是一种解决常见问题的可重用解决方案,它被广泛应用于构建高质量、可维护的代码。工厂方法是面向对象设计模式的一种,属于创建型模式。这个...
python设计模式——factorymethod模式(最新可编辑文档)
4. 工厂方法模式(Factory Method) 5. 原型模式(Prototype) 结构型: 6. 适配器模式(Adapter Pattern) 7. 桥接模式(Bridge Pattern) 8. 装饰模式(Decorator Pattern) 9. 组合模式(Composite Pattern...
本Demo程序主要涵盖了两种常用的创建型设计模式——简单工厂模式(Simple Factory)和工厂方法模式(Factory Method)。这两种模式都是用来创建对象,但它们在灵活性和抽象程度上有所不同。 简单工厂模式是一种静态...
2. 工厂方法(Factory Method):工厂方法为工厂类定义了接口,用多态来削弱了工厂类的职能。工厂方法可以降低风险和为日后的维护、扩展做准备。 3. 抽象工厂(Abstract Factory):抽象工厂是工厂模式三种形态中...
### 设计模式精解——GoF23中设计模式解析 #### 重要性与起源 设计模式是软件工程领域的一项重要研究,它提供了一系列解决常见软件设计问题的模板。GoF23指的是由Erich Gamma、Richard Helm、Ralph Johnson和John ...
1. **创建型模式**:包括单例(Singleton)、工厂方法(Factory Method)、抽象工厂(Abstract Factory)、建造者(Builder)和原型(Prototype)。这些模式关注对象的创建过程,使得代码更加灵活,易于管理和扩展。...
工厂方法模式用于创建对象,允许推迟实例化到子类,增强了代码的灵活性。装饰器模式可以在不改变对象接口的情况下,动态地给对象添加新的行为或职责。而代理模式可以用来控制对原对象的访问,比如在访问前进行权限...
##### 3、FACTORY METHOD(工厂方法模式) 工厂方法模式进一步抽象了工厂的概念,定义了一个创建产品对象的工厂接口,但让具体的子类决定实例化哪一个类。 **例子**:带MM去快餐店吃汉堡,你可以说“来一个汉堡”...
本文实例讲述了Python设计...设计模式——工厂方法模式 工厂方法模式(Factory Method Pattern):定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延时到其子类. 工厂方法模式克服了简单工
[工厂方法模式](https://example.com/factory_method_pattern) **例子**: ```java // Product Interface public interface Work { void doWork(); } // Concrete Products public class StudentWork implements...
《设计模式——可复用面向对象软件的基础》是IT领域中的经典著作,由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位大师合著,他们因此被誉为GoF(Gang of Four)。这本书提出了面向对象设计的23种...
创建型模式如单例模式(Singleton)、工厂方法模式(Factory Method)和建造者模式(Builder)关注于对象的创建过程,使得对象的实例化更为灵活,同时也控制了对象的生命周期。 结构型模式如适配器模式(Adapter)...
工厂方法模式(Factory Method Pattern)也是一种常用的创建型模式。它的核心思想是在基类中定义一个创建对象的接口,让子类决定实例化哪一个类。这种模式将实例化的工作推迟到子类去完成。 ##### 3.2 实现原理 ...
3.3 Factory Method(工厂方法)— 对象创建型模式 70 3.4 Prototype(原型)—对象创建型 模式 87 3.5 Singleton(单件)—对象创建型 模式 84 3.6 创建型模式的讨论 89 第4章 结构型模式 91 4.1 Adapter(适配器)...
在众多的设计模式中,“工厂方法”(Factory Method)是一种常用的创建型设计模式,它提供了一种创建对象的最佳方式,即定义一个创建对象的接口,但让实现这个接口的类决定实例化哪一个类。工厂方法使得一个类的实例...