设计模式--Simple Factory 模式

简介:

Simple Factory模式(又称Static Factory模式),一个Simple Factory生产成品,而对客户端隐藏产品产生的细节。实作时定义一个产品介面(interface),并透过特定静态方法来建立成品。 
假设有一个音乐盒工厂,购买音乐盒的客人不用知道音乐盒是如何制作的,他只要知道如何播放音乐盒就可以了,以 UML 类别图来表示以上的概念:

image

如上图所示的,MusicBoxDemo代表了客户的角色,它只依赖于IMusicBox介面,而不关心特定的实作,实际如何产生IMusicBox的实例由MusicBoxFactory完成,以一个简单的程式来实现上面这个UML类别图:

  • IMusicBox.java
public interface IMusicBox {
public void play();
}
  • PianoBox.java
public class PianoBox implements IMusicBox {
public void play() {
System.out.println("拨放钢琴音乐:)");
}
}
  • ViolinBox.java
public class ViolinBox implements IMusicBox {
public void play() {
System.out.println("拨放小提琴音乐^_^");
}
}
  • MusicBoxFactory.java
public class MusicBoxFactory {
public static IMusicBox createMusicBox(String name)
throws InstantiationException,
IllegalAccessException,
ClassNotFoundException {
// 这边使用的是Java的Reflection机制来产生实例
// 不过客户端不用管啦
// 以后就算改变了这边的程式,客户端程式是不用更改的
return (IMusicBox) Class.forName(name).newInstance();
}
}
  • MusicBoxDemo.java
public class MusicBoxDemo {
public static void main(String[] args) throws Exception {
playMusicBox(MusicBoxFactory.createMusicBox("PianoBox"));
playMusicBox(MusicBoxFactory.createMusicBox("ViolinBox"));
}

public static void playMusicBox(IMusicBox musicBox) {
musicBox.play();
}
}

由于客户端只依赖于IMusicBox介面,所以即使您日后改变了createMusicBox()中的实作方式,对客户端是一点影响也没有的。 

客户只要面对Factory,客户依赖于产品介面,产品的具体实作是可以与客户隔开的,它们也是可以抽换的。


目录
相关文章
|
设计模式 PHP
php设计模式-简单工厂模式 (Simple Factory)
简单工厂模式又称为静态工厂方法模型,它属于类创建型模式,简单工厂并不属于23种设计模式,刚开始学习设计模式的同学,对简单工厂模式、工厂方法、抽象工厂中的工厂一知半解,其实白话点来说:这些模式一定会有一个工厂类,子类并不需要知道工厂细节,只需新建工厂创建产品即好。
99 0
|
设计模式
【愚公系列】2021年12月 二十三种设计模式(零)-简单工厂模式(Simple Factory Pattern)
【愚公系列】2021年12月 二十三种设计模式(零)-简单工厂模式(Simple Factory Pattern)
128 0
【愚公系列】2021年12月 二十三种设计模式(零)-简单工厂模式(Simple Factory Pattern)
|
设计模式 数据库
【愚公系列】2021年12月 二十三种设计模式(一)-工厂方法模式(Factory Method Pattern)
【愚公系列】2021年12月 二十三种设计模式(一)-工厂方法模式(Factory Method Pattern)
【愚公系列】2021年12月 二十三种设计模式(一)-工厂方法模式(Factory Method Pattern)
|
设计模式
【愚公系列】2021年12月 二十三种设计模式(二)-抽象工厂模式(Abstract Factory Pattern)
【愚公系列】2021年12月 二十三种设计模式(二)-抽象工厂模式(Abstract Factory Pattern)
【愚公系列】2021年12月 二十三种设计模式(二)-抽象工厂模式(Abstract Factory Pattern)
|
C# 设计模式 .NET
使用C# (.NET Core) 实现简单工厂(Simple Factory) 和工厂方法设计模式 (Factory Method Pattern)
本文源自深入浅出设计模式. 只不过我是使用C#/.NET Core实现的例子.   前言 当你看见new这个关键字的时候, 就应该想到它是具体的实现. 这就是一个具体的类, 为了更灵活, 我们应该使用的是接口(interface).
1402 0
|
关系型数据库 Go C#
C#设计模式之二工厂方法模式(Factory Method Pattern)【创建型】
原文:C#设计模式之二工厂方法模式(Factory Method Pattern)【创建型】 一、引言       在上一篇文章中我们讲解了过渡的一种模式叫做【简单工厂】,也有叫【静态工厂】的,通过对简单工厂模式得了解,我们也发现了它的缺点,就是随着需求的变化我们要不停地修改工厂里面的方法的代码,需求变化越多,里面的If--Else--也越多,这样就会造成简单工厂的实现逻辑过于复杂。
1542 0