何为简单工厂模式?

由一个工厂类根据传入的参数,动态创建并返回相应的具体的实例!

三个构成元素:

1、工厂类

2、抽象产品

3、具体产品

优点:

1、提高扩展性

2、隐藏具体的实现类,并不需要知道产品具体的创建过程,只需要向工厂类传入相应参数,就可以获取相应的产品实例!

代码演示:

 1
2
3
4
5
6
7
8
9
10
// 抽象产品
package com.test.simplefactory; public interface Person { public String sayHello(String name); public String sayGoodbye(String name); }
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package com.test.simplefactory;
// 具体产品1
public class Chinese implements Person { @Override
public String sayHello(String name) {
return "你好," + name;
} @Override
public String sayGoodbye(String name) {
return "再见," + name;
} }
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package com.test.simplefactory;
// 具体产品2
public class American implements Person { @Override
public String sayHello(String name) {
return "hello," + name;
} @Override
public String sayGoodbye(String name) {
return "goodbye," + name;
} }
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package com.test.simplefactory;
// 工厂类
public class PersonFactory { // 根据参数的不同返回不同的实例
public Person getPerson(String name){ Person person = null; if("chinese".equals(name)){ person = new Chinese(); }else if("american".equals(name)){ person = new American(); } return person; } }
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package com.test.simplefactory;
// 测试
public class Client { public static void main(String[] args) { /*Person chinese = new Chinese(); System.out.println(chinese.sayHello("张三"));
System.out.println(chinese.sayGoodbye("张三")); Person american = new American(); System.out.println(american.sayHello("Tom"));
System.out.println(american.sayGoodbye("Tom"));*/ PersonFactory factory = new PersonFactory();
Person chinese = factory.getPerson("chinese"); System.out.println(chinese.sayHello("张三")); } }

Java简单工厂模式(SimpleFactoryMode)的更多相关文章

  1. !!转!!java 简单工厂模式

    举两个例子以快速明白Java中的简单工厂模式: 女娲抟土造人话说:“天地开辟,未有人民,女娲抟土为人.”女娲需要用土造出一个个的人,但在女娲造出人之前,人的概念只存在于女娲的思想里面.女娲造人,这就是 ...

  2. Java简单工厂模式

    Java简单工厂模式 在阎宏博士的<JAVA与模式>一书中开头是这样描述简单工厂模式的:简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式.简 ...

  3. Java简单工厂模式以及来自lambda的优化

    前言    设计模式是软件工程中一些问题的统一解决方案的模型,它的出现是为了解决一些普遍存在的,却不能被语言特性直接解决的问题,随着软件工程的发展,设计模式也会不断的进行更新,本文介绍的是经典设计模式 ...

  4. 设计模式(二)——Java简单工厂模式

    简单工厂模式 案例: 披萨的项目(要便于披萨种类的扩展,要便于维护) 1)披萨的种类很多(比如 GreekPizz.CheesePizz 等) 2)披萨的制作有 prepare,bake, cut, ...

  5. JAVA简单工厂模式(从现实生活角度理解代码原理)

    简单工厂模式(Simple Factory),说他简单是因为我们可以将此模式比作一个简单的民间作坊,他们只有固定的生产线生产固定的产品.也可以称他为静态工厂设计模式,类似于之前提到过静态代理设计模式, ...

  6. java 简单工厂模式实现

    简单工厂模式:也可以叫做静态工厂方法,属于类创建型模式,根据不同的参数,返回不同的类实现. 主要包含了三个角色: A.抽象产品角色 一般用接口 或是 抽象类实现 B.具体的产品角色,具体的类的实现 C ...

  7. (转) java 简单工厂模式(实现一个计算器)

    package com.simpleFactory; /** * 运算类 * @author Administrator * */ public class Operation { private d ...

  8. Java 简单工厂模式

    首先 定义一接口 package com.org; public interface SampleInterface { public void print(String s); } 定义两个接口的实 ...

  9. Java中的简单工厂模式

    举两个例子以快速明白Java中的简单 工厂模式: 女娲抟土造人话说:“天地开辟,未有人民,女娲抟土为人.”女娲需要用土造出一个个的人,但在女娲造出人之前,人的概念只存在于女娲的思想里面.女娲造人,这就 ...

随机推荐

  1. Ubuntu端口开放

    一.关于iptable的介绍 维基百科:https://zh.wikipedia.org/wiki/Iptables 注意:iptables的操作需要root权限 二.具体操作 sudo apt-ge ...

  2. 弹性(flex)布局

    五大主流浏览器及其内核:谷歌浏览器:Google Chrome.内核是blink火狐浏览器:Mozilla Firefox.内核是Gecko:欧鹏浏览器:OPera.内核是blink苹果浏览器:Saf ...

  3. [官网]How to use distributed transactions with SQL Server on Docker

    How to use distributed transactions with SQL Server on Docker https://docs.microsoft.com/en-us/sql/l ...

  4. CentOS7安装Jenkins自动化部署maven项目

    前言: 最近要弄一个jenkins工具,已经安装好了并且jenkins使用部署项目的流程已经基本走通,上图: 话不多说,开始 第一步:安装jenkins: [ 准备环境: 在centOS7环境上:安装 ...

  5. MyBatis映射文件1(增删改、insert获取自增主键值)

    增删改 Mybatis为我们提供了<insert>.<update>.<delete>标签来对应增删改操作 在接口中写增删改的抽象方法 void addEmp(Em ...

  6. Flutter之 LimitedBox、Offstage、OverflowBox、SizedBox详解

    1. LimitedBox A box that limits its size only when it's unconstrained. 1.1 简介 LimitedBox,通过字面意思,也可以猜 ...

  7. “耐撕”团队 2016.03.31 站立会议

    1. 时间: 19:30--19:50  共计20分钟. 2. 成员: Z 郑蕊 * 组长 (博客:http://www.cnblogs.com/zhengrui0452/), P 濮成林(博客:ht ...

  8. java 从键盘录入的三种方法

    详细内容连接 https://blog.csdn.net/StriverLi/article/details/52984066

  9. docker学习笔记二

    知识点: 1)手动构建镜像 2)Dockerfile快速构建镜像 阿里云yum源https://opsx.alibaba.com/mirror 镜像制作nginx镜像实例 创建并运行centos容器 ...

  10. mysql从入门到精通

    解决MySQL Got a packet bigger than 'max_allowed_packet' bytes 问题在一次性向mysql插入的数据过大,可在my.ini中修改max_allow ...