`
lokvin
  • 浏览: 164493 次
  • 性别: Icon_minigender_1
  • 来自: 地球
文章分类
社区版块
存档分类
最新评论

设计模式 - Simple Factory

阅读更多
注:这里的设计模式引用自林信良java 学习笔记。相关内容属于原作者所有,这里只是为了学习,进行转载和相应小修改。

  Simple Factory 模式又称为 Static Factory,使用 SimpleFactory 来制造产品对客户端隐藏产品制造细节。实现时定义一个产品的 Interface , 通过静态方法来制造产品。

SimpleFactory 的类图如下所示:


客户(Client) 只面对 Factory, 客户依赖于产品的接口(interface), 这样就将产品的具体实现与客户隔离开了。

举例,假设有一个音乐盒工厂,客户不用知道某种音乐盒如何制造,他只要知道如何播放音乐就可以了,类图如下所示:


上图中 MusicBoxDemo 代表客户,他只依赖于音乐盒接口 IMusicBox, 他不关心具体的音乐盒实现类,具体产生何种的音乐盒实现由工厂类 MusicBoxFactory 完成。

IMusicBox
package org.lokvin.example.designpattern.simplefactory;

/**
 * IMusicBox 产品接口
 * @author lokvin
 *
 */
public interface IMusicBox {
	public void play();

}



PianoBox
package org.lokvin.example.designpattern.simplefactory;

/**
 * PianoBox 产品,实现 IMusicBox 接口
 * @author lokvin
 *
 */
public class PianoBox implements IMusicBox {

	public void play() {
		System.out.println("播放钢琴音乐 ;)");
	}
	

}


ViolinBox

package org.lokvin.example.designpattern.simplefactory;

/**
 * ViolinBox 产品,实现 IMusicBox 接口
 * @author lokvin
 *
 */
public class ViolinBox implements IMusicBox {

	public void play() {
		System.out.println("播放小提琴音乐 ^_^");
		
	}
	

}


MusicBoxFactory

package org.lokvin.example.designpattern.simplefactory;

/**
 * MusicBoxFactory 音乐盒工厂类,通过方法 createMusicBox() 
 * 制造音乐盒,返回 IMusicBox 对象
 * @author lokvin
 *
 */
public class MusicBoxFactory {
	public static IMusicBox createMusicBox(String name) 
		throws InstantiationException, IllegalAccessException, ClassNotFoundException {
		
		return (IMusicBox)Class.forName(name).newInstance();
	}

}


MusicBoxDemo

package org.lokvin.example.designpattern.simplefactory;

/**
 * MusicBoxDemo 是使用音乐盒的客户类
 * 他只依赖于 IMusicBox 接口
 * @author lokvin
 *
 */
public class MusicBoxDemo {
	/*
	 * 播放音乐方法
	 */
	public static void playMusicBox(IMusicBox box) {
		box.play();
	}
	
	public static void main(String[] args) throws Exception {
		playMusicBox(MusicBoxFactory.createMusicBox("org.lokvin.example.designpattern.simplefactory.PianoBox"));
		playMusicBox(MusicBoxFactory.createMusicBox("org.lokvin.example.designpattern.simplefactory.ViolinBox"));
	}

}


题外话:这里的 UML 类图采用 viso 绘制,感觉不是很方便,不知有没有更小巧方便的工具。林信良老师的教学文章写的非常细致,十分欣赏佩服。
分享到:
评论

相关推荐

    C#设计模式-吕震宇

    本资料来源于吕震宇博客,欢迎访问 ...经过整理,方便大家阅读。...C#设计模式(4)-Simple Factory Pattern C#设计模式(3) - 设计原则(2) C#设计模式(2) - 设计原则(1) C#设计模式(1) - 面向对象基本概念复习

    calculator-of-Simple-Factory-Pattern.rar_factory

    总的来说,这个"calculator-of-Simple-Factory-Pattern.rar_factory"项目展示了如何运用简单工厂模式来构建一个计算器系统,使得系统能够根据不同的计算需求动态地创建相应的计算器对象,同时也为未来的功能扩展打下...

    设计模式 创建型模式 Simple Factory模式(简单工厂)

    Simple Factory模式: 定义创建对象的接口,并封装对象的创建。 一般情况下,我们为了提高内聚和松耦合,经常会使用多态来处理一些问题。抽象出一些类的公共接口作为抽象基类或者接口。这样的话,我们将会面临一个...

    设计模式 t01SimpleFactory

    "t01SimpleFactory"指的是简单工厂(Simple Factory)设计模式,它是创建型设计模式之一。 简单工厂模式的核心思想是通过一个公共的工厂类来创建对象,这个工厂类负责实例化客户所需的对象,客户只需要知道具体的...

    java 设计模式 Facade外观模式 Simple Factory 简单工厂模式

    在这篇文章中,我们将深入探讨两种常见的设计模式:Facade(外观)模式和Simple Factory(简单工厂)模式。 首先,让我们关注Facade模式。外观模式是一种结构型设计模式,它的主要目标是提供一个统一的接口,用来...

    设计模式之Factory

    本篇文章将详细探讨"设计模式之Factory",它是一种非常基础且重要的创建型设计模式。 Factory模式的核心思想是提供一个接口或者抽象类,用于创建某一类对象,但允许其子类决定实例化哪一个类。这种模式使得创建过程...

    北风网-设计模式-简单工厂模式ppt

    "SimpleFactory"可能是这个PPT中的一个示例代码文件,展示了如何在实际编程中实现简单工厂。这个文件可能包含了一个工厂类,用于根据输入条件返回具体的产品实例。 在学习这个PPT时,你可以关注如何将简单工厂模式...

    java与设计模式--通俗易懂的介绍

    public class SimpleFactory extends Factory { public Sample creator() { return new SampleA(); } } public class BombFactory extends Factory { public Sample creator() { return new SampleB(); } } `...

    SimpleFactory

    "SimpleFactory" 是设计模式中的一种,通常称为简单工厂模式。它属于创建型设计模式,主要目的是提供一个创建对象的公共接口,让客户端可以不关心具体对象的创建过程,只需要知道所需对象的类型即可。这种模式简化了...

    Simple-Factory-for-Salary.rar_factory

    【标题】"Simple-Factory-for-Salary.rar_factory" 指的是一个使用简单工厂设计模式来计算薪资的项目,特别适用于Visual C++ 6.0(VC6)环境。这个项目可能包含了一个或多个用于创建薪资计算类实例的工厂类,以适应...

    设计模式--Java语言版本

    Java中的Abstract Factory和Simple Factory模式都是其实例。 3. **建造者模式**:将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。Java中的Builder模式用于创建复杂的对象结构。 4. **...

    软件系统设计-设计模式 - 具体设计模式1

    设计模式是软件开发中的一种重要概念,用于解决常见的设计问题并提供可复用的解决方案。在给定的文件中,提到了三种具体的设计模式:策略模式、简单工厂模式和工厂方法模式,以及一种抽象设计模式——抽象工厂模式。...

    设计模式----工厂模式

    设计模式是软件工程中的一种最佳实践,用于解决在开发过程中经常遇到的问题,提供了一套标准的解决方案。工厂模式是设计模式中的一个基础且常用的模式,它属于创建型模式,主要解决对象创建时的复杂性问题,使得代码...

    设计模式----简单工厂模式

    简单工厂模式是软件设计模式中的一种基础模式,它属于创建型模式,主要解决对象的创建问题,使得代码在创建对象时更加灵活,同时也隐藏了对象的创建细节,提高了代码的可读性和可维护性。在Java编程中,简单工厂模式...

    设计模式-简单工厂模式-例题

    简单工厂模式(Simple Factory Pattern)是一种常用的创建型设计模式。它提供了一种方式来封装对象的创建过程,使得整个系统更加灵活,易于扩展。在简单工厂模式中,存在一个专门用于创建对象的工厂类,它负责根据...

    java工厂模式SimpleFactory

    总的来说,Java工厂模式SimpleFactory是一种实用的设计模式,能够帮助我们更好地管理对象的创建过程,提高代码的可维护性和可扩展性。通过将对象的创建过程封装在工厂类中,我们可以在不修改客户端代码的情况下,...

    设计模式-工厂模式.pdf

    ### 设计模式之工厂模式详解 #### 一、概述 工厂模式是一种常用的设计模式,属于创建型模式之一。它的核心思想在于将对象的创建过程封装起来,并通过特定的工厂类来实现对象的创建,以此达到降低系统耦合度的目的...

Global site tag (gtag.js) - Google Analytics