• 简单工厂模式不是23种设计模式之一,简单工厂模式属于创建型模式,
  • 又叫做静态工厂方法(Static Factory Method)
  • 简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。

角色:

抽象产品角色(Product) :

是所有对象的父类,它负责描述所有实例所共有的公共接口。

具体产品角色(ConcreteProduct) :

所有创建的对象都是充当这个角色的某个具体类的实例,实现了Product接口。

工厂类角色(Creator) :

简单工厂模式的核心,是创建所有实例的内部逻辑,可被外界直接访问(因为里面有一个静态方法),创建所需产品的对象。

代码实现:

1.Product.java

  1. package com.simplefactory ;
  2. // 定义一个抽象产品角色
  3. public interface Product
  4. {
  5. }

2.ConcreteProductA.java

  1. package com.simplefactory ;
  2. //具体产品角色A
  3. public class ConcreteProductA implements Product
  4. {
  5. }

3.ConcreteProductB.java

  1. package com.simplefactory ;
  2. //具体产品角色B
  3. public class ConcreteProductB implements Product
  4. {
  5. }

4.Creator.java

  1. package com.simplefactory ;
  2. //工厂类角色
  3. public class Creator
  4. {
  5. public static Product methodTest(String str)
  6. {
  7. if ("A".equals(str))
  8. {
  9. //这里可做好多事
  10. return new ConcreteProductA() ;
  11. }
  12. else if ("B".equals(str))
  13. {
  14. return new ConcreteProductB() ;
  15. }
  16. return null ;
  17. }
  18. }

5.Client.java

  1. package com.simplefactory ;
  2. public class Client
  3. {
  4. public static void main(String[] args)
  5. {
  6. Product product = Creator.methodTest("A") ;
  7. System.out.println(product.getClass().getName()) ;
  8. Product product2 = Creator.methodTest("B") ;
  9. System.out.println(product2.getClass().getName()) ;
  10. }
  11. }

Simple Factory (简单工厂模式)的更多相关文章

  1. Simple Factory 简单工厂模式(静态工厂)

    基本概念: 1) Simple Factory模式属于创建型模式, 2) 简单工厂模式是由一个工厂(注意是一个!)对象决定创建出哪一种产品类的实例(例如你到肯德基说你要鸡腿,要薯条,要饮料还是,,,这 ...

  2. Java设计模式:Simple Factory(简单工厂)模式

    概念定义 简单工厂(Simple Factory)模式,又称静态工厂方法(Static Factory Method)模式,即定义一个工厂类,根据传入的不同参数创建不同的产品实例,这些实例对象具有共同 ...

  3. 设计模式(四):SIMPLE FACTORY简单工厂模式 -- 创建型模式

    1.定义 简单工厂模式又称静态工厂方法模式.重命名上就可以看出这个模式一定很简单.它存在的目的很简单:定义一个用于创建对象的接口. 2.适用场景 如果一个客户要一款宝马车,一般的做法是客户去创建一款宝 ...

  4. Net设计模式实例之简单工厂模式(Simple Factory Pattern)

    一.简单工厂模式简介(Bref Introduction) 简单工厂模式(Simple Factory Pattern)的优点是,工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类, ...

  5. PHP设计模式(一)简单工厂模式 (Simple Factory For PHP)

    最近天气变化无常,身为程序猿的寡人!~终究难耐天气的挑战,病倒了,果然,程序猿还需多保养自己的身体,有句话这么说:一生只有两件事能报复你:不够努力的辜负和过度消耗身体的后患.话不多说,开始吧. 一.什 ...

  6. 设计模式之简单工厂模式Simple Factory(四创建型)

    工厂模式简介. 工厂模式专门负责将大量有共同接口的类实例化 工厂模式可以动态决定将哪一个类实例化,不必事先知道每次要实例化哪一个类. 工厂模式有三种形态: 1.简单工厂模式Simple Factory ...

  7. 创建型模式(前引)简单工厂模式Simple Factory

    一引出的原因(解决下面的问题) 简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式. 在简单工厂模式 ...

  8. 深入浅出设计模式——简单工厂模式(Simple Factory)

    介绍简单工厂模式不能说是一个设计模式,说它是一种编程习惯可能更恰当些.因为它至少不是Gof23种设计模式之一.但它在实际的编程中经常被用到,而且思想也非常简单,可以说是工厂方法模式的一个引导,所以我想 ...

  9. 设计模式学习之简单工厂(Simple Factory,创建型模式)(1)

    简单工厂(Simple Factory,创建型模式) 第一步: 比如我们要采集苹果和香蕉,那么我们需要创建一个Apple类和Banana类,里面各自有采集方法get(),然后通过main方法进行调用, ...

随机推荐

  1. 洛谷P3620 [APIO/CTSC 2007] 数据备份 [堆,贪心,差分]

    题目传送门 题目描述 你在一家 IT 公司为大型写字楼或办公楼(offices)的计算机数据做备份.然而数据备份的工作是枯燥乏味的,因此你想设计一个系统让不同的办公楼彼此之间互相备份,而你则坐在家中尽 ...

  2. Eclipse 报 "The builder launch configuration could not be found" 错误的解决办法

    http://blog.csdn.net/defonds/article/details/26340561 Eclipse 忽然报 "The builder launch configura ...

  3. Bzoj2721 [Violet]樱花(筛法)

    题面 题解 首先化一下式子 $$ \frac 1x+\frac 1y=\frac 1{n!} \Rightarrow \frac {x+y}{xy}=\frac 1{n!} \Rightarrow ( ...

  4. Linux前后台进程切换

    (1).Linux前台进程与后台进程的区别 前台进程:是在终端中运行的命令,那么该终端就为进程的控制终端,一旦这个终端关闭,这个进程也随之消失. 后台进程:也叫守护进程(Daemon),是运行在后台的 ...

  5. 【二分】Jessica's Reading Problem

    [POJ3320]Jessica's Reading Problem Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 1309 ...

  6. Codeforces 804D Expected diameter of a tree(树形DP+期望)

    [题目链接] http://codeforces.com/contest/804/problem/D [题目大意] 给你一个森林,每次询问给出u,v, 从u所在连通块中随机选出一个点与v所在连通块中随 ...

  7. 【矩阵乘法】CDOJ1610 黑红梅方

    考虑用4^n-不存在连续4个相同的. f(i,j,k,l)表示以i为结尾的序列,最后三位分别是j,k,l时的方案. 可以转移,写一个64*64的转移矩阵. 貌似可以优化?……未完待续. #includ ...

  8. [bzoj1009](HNOI2008)GT考试 (kmp+矩阵快速幂加速递推)

    Description 阿 申准备报名参加GT考试,准考证号为N位数X1X2....Xn(0<=Xi<=9),他不希望准考证号上出现不吉利的数字.他的不吉利数学 A1A2...Am(0&l ...

  9. iOS 系统原生分享图片 文字 音乐 纯视频 网页

    为了方便使用,我封装了一个分享的工具类LFSystemShareUtil.工程要引Social.framework. LFSystemShareUtil.h #import <Foundatio ...

  10. UVA 10163 - Storage Keepers(dp)

    本文出自   http://blog.csdn.net/shuangde800 题目链接: 点击打开链接 题意 有n个仓库,让m个人来看管.一个仓库只能由一个人来看管,一个人可以看管多个仓库. 每个人 ...