`

设计模式之工厂模式(2)

 
阅读更多

1、定义

      多个工厂模式:工厂类中定义多个方法,每个方法对应生成产品

      静态工厂模式:工厂类中定义静态方法,每个静态方法对于生成产品;或者定义一个静态方法来生成产品;

 

 

2、例子

      拿简单工厂模式(1)的例子进行改进,SenderFactory采用多个工厂模式/静态工厂模式的方法

      多个工厂模式:

public class SenderFactory {
	public Sender createMailSender() {
		return new MailSender();
	}
	
	public Sender createSmsSender() {
		return new SmsSender();
	}
	
	public Sender createPushSender() {
		return new PushSender();
	}
}

   

public static void main(String[] args) {
		SenderFactory factory = new SenderFactory();
		Sender sender = factory.createPushSender();
		sender.send();
	}

 

    静态工厂类(1):

    

public class SenderFactory {
	public static Sender createMailSender() {
		return new MailSender();
	}

	public static Sender createSmsSender() {
		return new SmsSender();
	}

	public static Sender createPushSender() {
		return new PushSender();
	}
}

 

public static void main(String[] args) {
		Sender sender = SenderFactory.createMailSender();
		sender.send();
	}

   静态工厂类(2)
  

public class SendFactory {
	public final static int MAIL = 1;
	public final static int SMS = 2;
	public final static int PUSH = 3;

	public static Sender createSender(int sendType) {
		Sender sender = null;
		switch (sendType) {
		case SendFactory.MAIL:
			sender = new MailSender();
			break;
		case SendFactory.SMS:
			sender = new SmsSender();
			break;
		case SendFactory.PUSH:
			sender = new PushSender();
			break;
		default:
			sender = new MailSender();
			break;
		}
		
		return sender;
	}
}

 

    与简单工厂模式相比,不管多个工厂模式还是静态工厂模式,SenderFactory类中自己添加相应的方法,如果再添加一种发送方式,还需要修改SenderFactory的类, 还是破坏了开闭原则。

     

 

分享到:
评论

相关推荐

    java设计模式之工厂模式

    java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式...

    设计模式之工厂方法模式

    工厂方法模式是设计模式中的创建型模式之一,它在软件工程中扮演着非常重要的角色,尤其是在C#这样的面向对象编程语言中。工厂方法模式提供了一种封装对象创建过程的方法,使得具体的创建过程延迟到子类中进行,从而...

    深入浅出设计模式之工厂模式

    根据提供的标题“深入浅出设计模式之工厂模式”与描述“将《Head First 设计模式》(中文版)按章节进行了分割,每章一个文件,方便大家下载”,我们可以推测出这部分内容主要关注的是设计模式中的工厂模式。...

    设计模式之工厂系列

    "设计模式之工厂系列"指的是几种不同的工厂模式,它们都是面向对象设计中的重要组成部分,尤其在Java编程语言中广泛使用。工厂模式的主要目标是提供一个创建对象的抽象接口,使得系统在不指定具体实现类的情况下,...

    抽象工厂设计模式抽象工厂设计模式

    抽象工厂设计模式抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式

    设计模式资料之工厂设计模式

    总结来说,这份“设计模式资料之工厂设计模式”可能会涵盖工厂模式的基本概念、分类、作用,尤其是重点讲解抽象工厂模式的原理、应用场景及实现方式。通过学习这些内容,开发者将能更好地理解和运用设计模式,提升...

    设计模式之工厂

    "工厂模式"是其中一种常用的设计模式,它提供了一种创建对象的最佳方式。在这个主题下,我们将深入探讨三种主要的工厂模式:简单工厂、工厂方法和抽象工厂。 1. **简单工厂模式**: 简单工厂模式是最基础的形式,...

    设计模式单例模式和工厂模式综合应用

    "设计模式单例模式和工厂模式综合应用"的主题聚焦于两种常用的设计模式:单例模式和工厂模式,并探讨它们如何协同工作来实现高效、灵活的代码结构。这个主题尤其适用于Java编程语言,因为Java的面向对象特性使得设计...

    设计模式之禅之 工厂方法模式+策略模式

    ### 设计模式之禅之 工厂方法模式+策略模式 #### 一、概述 《设计模式之禅》第35章介绍了工厂方法模式与策略模式的结合运用,旨在通过一个具体的案例——“一卡通”交易系统的设计,来展现如何在实际项目中灵活...

    设计模式之单例模式和工厂模式

    细心整合和单例模式和工厂模式的几种模型,懒汉式,饿汉式,如何并发操作模式,等都有详细讲解

    c++设计模式-工厂方法模式

    工厂方法模式是面向对象设计模式中的一个创建型模式,它提供了一种封装对象创建过程的方式,使得具体的对象创建过程可以延迟到子类中进行。在C++编程中,工厂方法模式广泛应用于各种软件设计中,因为它能有效地解耦...

    菜鸟教程设计模式之工厂模式代码整理

    在这个"菜鸟教程设计模式之工厂模式代码整理"中,我们将深入探讨工厂模式的基本概念、结构以及如何在实际编程中应用。 工厂模式的核心思想是通过一个专门的工厂类来创建对象,而不是让客户端代码直接实例化具体的...

    [创建型模式] head first 设计模式之工厂模式(Factory)

    工厂方法(Factory Method)是工厂模式的一种具体实现,它是《Head First 设计模式》这本书中讲解的重点之一。在这个模式中,一个工厂类声明了一个创建对象的抽象方法,但并不实现这个方法。而是由子类决定要实例化...

    设计模式之工厂方法、简单工厂、抽象工厂

    这三种工厂模式的共同之处在于它们都为对象的创建提供了抽象层,隐藏了具体的实例化过程。然而,它们之间的区别在于灵活性和抽象程度: - 工厂方法模式提供了一种定义抽象接口的方法,让子类来决定具体实例化哪个类...

    设计模式——工厂方法模式

    工厂方法模式是面向对象设计模式中的一种,它属于创建型模式,主要解决的是当系统需要创建的对象具有多种类型,而具体创建哪种类型的对象在运行时才能确定的问题。在这个压缩包中,`FactoryMethod`可能包含了Java...

    工厂设计模式代码

    2. **工厂方法模式**:相比于简单工厂模式,工厂方法模式将对象的创建责任进一步抽象到子类中。在工厂方法模式中,接口或抽象类定义了创建对象的工厂方法,而具体的实现由各个子类负责。这样,当需要增加新的产品...

    设计模式之工厂模式Java实现和类设计图

    在软件开发中,设计模式是经验丰富的开发者们总结出的解决常见问题的模板或最佳实践。工厂模式作为其中的一种,是对象创建型模式,它的主要目的是为了隔离对象创建过程与客户端之间的关系,使得创建过程更加灵活,...

    设计模式_工厂模式

    设计模式是软件工程中的一种最佳实践,用于解决常见的设计问题并提供可重用的解决方案。在这些模式中,工厂模式是一种创建型模式,它提供了一种封装对象创建过程的方法,使得客户端代码无需直接实例化对象,而是通过...

    设计模式之蝉

    还有“工厂模式”(Factory pattern),它是创建型设计模式之一,用于创建对象而不暴露创建逻辑给客户端,并且通过使用一个共同的接口来指向新创建的对象。这种模式在创建对象时提供了更高的灵活性和可扩展性。在...

    设计模式之java工厂模式

    "设计模式之java工厂模式"是关于如何优雅地创建对象的一种经典设计模式,它属于创建者模式类别。创建者模式主要关注对象的创建,而工厂模式则在其中扮演着重要角色,因为它提供了一种抽象的方式来创建对象,从而使...

Global site tag (gtag.js) - Google Analytics