`
qiemengdao
  • 浏览: 276593 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

设计模式浅谈2——工厂模式之简单工厂模式

阅读更多
工厂模式负责将大量有共同接口的类实例化。工厂模式可以动态决定哪一个类实例化,不必事先知道每次要实例化哪个类。工厂模式有如下几种形态:
1.简单工厂模式(Simple Factory):又称静态工厂方法模式
2.工厂方法模式(Factory Method):又称多态性工厂模式。
3.抽象工厂模式(Abstract Factory):又称工具箱模式。

一、简单工厂模式

简单工厂模式是工厂方法模式的一个特殊实现。
简单工厂模式的实例:
一个农场公司,专门向市场销售各类水果。水果种类如下:
1.苹果
2.草莓
3.葡萄
水果与植物有很大的不同,水果最终可以采摘食用。那么一个自然的做法是建立一个各种水果都适用的接口,以便与农场里的其他植物区分开,如下图所示:

水果类有各种方法。继承水果类的子类如Strawberry,它的源代码如下:

其他的水果实例代码类似。
农场的园丁也是系统一部分,自然需要个合适的类来代表,这个类为FruitGardener,其结构图如下:

FruitGardener类根据客户端要求创建不同类型的水果,如Apple,Strawberry的实例等。如果遇到不合法的输入,则抛出BadFruitException。园丁类的代码如下:

可以看出,园丁类提供了一个静态工厂方法,在客户端的调用下,这个方法创建客户端所需要的水果对象。
简单工厂模式的结构
简单工厂模式是类的创建模式,这个模式一般性结构如下:

从图上可以看出,简单工厂模式设计到工厂角色,抽象产品角色以及具体产品角色等三个角色:
1.工厂类角色(Creator):这是工厂方法模式的核心,含有与应用密切相关的商业逻辑。工厂类在客户端的直接调用下创建产品对象,它往往由一个具体java类实现。
2.抽象产品角色(Product):这是工厂方法模式所创建对象的父类,或它们共同拥有的接口。抽象产品角色可以是一个java接口或者java抽象类实现。
3.具体产品角色(ConcreteProduct):工厂方法模式所创建的任何对象都是这个角色的实例,具体产品角色由一个具体java类实现。

工厂类Creator示意性代码如下:

抽象角色Product的示意性代码如下:

具体产品角色ConcreteProduct示意性代码如下:

  • 大小: 5.4 KB
  • 大小: 30 KB
  • 大小: 5.3 KB
  • 大小: 45.6 KB
  • 大小: 8 KB
  • 大小: 32.1 KB
  • 大小: 19.7 KB
  • 大小: 11.2 KB
  • 大小: 18.1 KB
分享到:
评论

相关推荐

    design-pattern-java.pdf

    基础知识 基础知识设计模式概述 从招式与内功谈起——设计模式概述(一) 从招式与内功谈起——设计模式概述(二) 从招式与内功谈起——设计模式概述(三) 面向对象设计原则 面向对象设计原则之单一职责原则 面向...

    设计模式与现实生活,形象,生动

    ### 设计模式与现实生活 设计模式是在软件开发过程中对常见问题的一种解决方案的总结,它能够帮助开发者更好地组织代码,提高程序的复用性、灵活性和扩展性。本文将结合生活中的例子来形象地阐述几种常见的设计模式...

    C#面向对象设计模式纵横谈(6):Prototype 原型模式(创建型模式)

    在C#中,原型模式还可以与其他设计模式结合使用,如工厂模式,可以将原型模式作为工厂方法的一部分,使得用户能够请求特定类型的对象实例,而无需了解如何创建它们。 总的来说,原型模式在C#中是一个非常实用的设计...

    C#视频-面向对象设计模式纵横谈(6):Prototype 原型模式(创建型模式)

    在本课程中,我们将深入探讨C#编程中的一个重要设计模式——Prototype原型模式,它是创建型设计模式的一种。原型模式主要用于简化实例化过程,通过复制已有对象来创建新对象,而不是直接通过构造函数来创建。这一...

    C#面向对象设计模式纵横谈(5)

    今天我们将深入探讨一种创建型设计模式——原型模式(Prototype Pattern)。 原型模式是一种结构型设计模式,它允许我们通过复制现有对象来创建新对象,而不是从头开始创建。这种模式主要用于减少创建新对象的复杂...

    java之浅谈深说--教你如何成长

    ### Java之浅谈深说——教你如何成长为Java编程高手 在IT行业中,Java作为一种广泛使用的编程语言,其重要性不言而喻。对于希望成为Java编程高手的学习者来说,掌握正确的学习路径至关重要。本文将根据提供的标题、...

    浅谈gui框架

    在实现一个GUI框架时,通常会遵循一定的设计模式,如观察者模式(Observer Pattern)用于处理事件,工厂模式(Factory Pattern)用于创建组件,策略模式(Strategy Pattern)用于处理不同的显示策略等。 本系列文章...

    C#权限管理和设计浅谈

    此文主要想和大家分享的是这段时间,对权限管理和设计的断断续续的思考学习,和个人的一些软件开发等方面的看法。 提到’权限管理和设计’,大家可能会第一时间... (主流)数据库通用 ——即利用工厂等模式,可以方便适

    浅谈CAD和机械制图的融合.pdf

    计算机辅助设计(CAD)技术作为现代工业设计中不可或缺的一部分,它的应用已经渗透到机械、电子、航空航天、化工和建筑等多个领域。CAD技术的普及和发展,对机械制图这一传统工科课程提出了新的挑战和要求。如何有效...

    新思路新方法新途径----浅谈网络教学下学科组建设.docx

    ### 新思路新方法新途径——浅谈网络教学下的学科组建设 #### 一、背景介绍 2020年春季,突如其来的新型冠状病毒疫情席卷全国,导致全国各地的学校不得不采取延迟开学的措施,以保障师生的生命安全和身体健康。在...

Global site tag (gtag.js) - Google Analytics