注:这里的设计模式引用自林信良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#设计模式(4)-Simple Factory Pattern C#设计模式(3) - 设计原则(2) C#设计模式(2) - 设计原则(1) C#设计模式(1) - 面向对象基本概念复习
总的来说,这个"calculator-of-Simple-Factory-Pattern.rar_factory"项目展示了如何运用简单工厂模式来构建一个计算器系统,使得系统能够根据不同的计算需求动态地创建相应的计算器对象,同时也为未来的功能扩展打下...
Simple Factory模式: 定义创建对象的接口,并封装对象的创建。 一般情况下,我们为了提高内聚和松耦合,经常会使用多态来处理一些问题。抽象出一些类的公共接口作为抽象基类或者接口。这样的话,我们将会面临一个...
"t01SimpleFactory"指的是简单工厂(Simple Factory)设计模式,它是创建型设计模式之一。 简单工厂模式的核心思想是通过一个公共的工厂类来创建对象,这个工厂类负责实例化客户所需的对象,客户只需要知道具体的...
在这篇文章中,我们将深入探讨两种常见的设计模式:Facade(外观)模式和Simple Factory(简单工厂)模式。 首先,让我们关注Facade模式。外观模式是一种结构型设计模式,它的主要目标是提供一个统一的接口,用来...
本篇文章将详细探讨"设计模式之Factory",它是一种非常基础且重要的创建型设计模式。 Factory模式的核心思想是提供一个接口或者抽象类,用于创建某一类对象,但允许其子类决定实例化哪一个类。这种模式使得创建过程...
"SimpleFactory"可能是这个PPT中的一个示例代码文件,展示了如何在实际编程中实现简单工厂。这个文件可能包含了一个工厂类,用于根据输入条件返回具体的产品实例。 在学习这个PPT时,你可以关注如何将简单工厂模式...
public class SimpleFactory extends Factory { public Sample creator() { return new SampleA(); } } public class BombFactory extends Factory { public Sample creator() { return new SampleB(); } } `...
"SimpleFactory" 是设计模式中的一种,通常称为简单工厂模式。它属于创建型设计模式,主要目的是提供一个创建对象的公共接口,让客户端可以不关心具体对象的创建过程,只需要知道所需对象的类型即可。这种模式简化了...
【标题】"Simple-Factory-for-Salary.rar_factory" 指的是一个使用简单工厂设计模式来计算薪资的项目,特别适用于Visual C++ 6.0(VC6)环境。这个项目可能包含了一个或多个用于创建薪资计算类实例的工厂类,以适应...
Java中的Abstract Factory和Simple Factory模式都是其实例。 3. **建造者模式**:将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。Java中的Builder模式用于创建复杂的对象结构。 4. **...
设计模式是软件开发中的一种重要概念,用于解决常见的设计问题并提供可复用的解决方案。在给定的文件中,提到了三种具体的设计模式:策略模式、简单工厂模式和工厂方法模式,以及一种抽象设计模式——抽象工厂模式。...
设计模式是软件工程中的一种最佳实践,用于解决在开发过程中经常遇到的问题,提供了一套标准的解决方案。工厂模式是设计模式中的一个基础且常用的模式,它属于创建型模式,主要解决对象创建时的复杂性问题,使得代码...
简单工厂模式是软件设计模式中的一种基础模式,它属于创建型模式,主要解决对象的创建问题,使得代码在创建对象时更加灵活,同时也隐藏了对象的创建细节,提高了代码的可读性和可维护性。在Java编程中,简单工厂模式...
简单工厂模式(Simple Factory Pattern)是一种常用的创建型设计模式。它提供了一种方式来封装对象的创建过程,使得整个系统更加灵活,易于扩展。在简单工厂模式中,存在一个专门用于创建对象的工厂类,它负责根据...
总的来说,Java工厂模式SimpleFactory是一种实用的设计模式,能够帮助我们更好地管理对象的创建过程,提高代码的可维护性和可扩展性。通过将对象的创建过程封装在工厂类中,我们可以在不修改客户端代码的情况下,...
### 设计模式之工厂模式详解 #### 一、概述 工厂模式是一种常用的设计模式,属于创建型模式之一。它的核心思想在于将对象的创建过程封装起来,并通过特定的工厂类来实现对象的创建,以此达到降低系统耦合度的目的...