简单工厂模式:是由一个工厂对象决定创建出哪一种产品类的实例,简单工厂模式是工厂模式家族中最简单实用的模式。

目的:为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。

它的组成:

1) 工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑。在java中它往往由一个具体类实现。

2) 抽象产品角色:它一般是具体产品继承的父类或者实现的接口。在java中由接口或者抽象类来实现。

3) 具体产品角色:工厂类所创建的对象就是此角色的实例。在java中由一个具体类实现。

以一个工厂生产电视和手机为例进行解释:

首先定义分别定义两个类代表电视和手机,并且都实现了work接口

 interface work{
public void working();
}
class Phone implements work{ @Override
public void working() {
System.out.println("生产手机");
} }
class Tv implements work{ @Override
public void working() {
System.out.println("生产电视");
} }

接着如果想使用这两个类,可以用普通创建对象的方法

 public class Test10 {

     public static void main(String[] args) {
Phone phone=new Phone();
phone.working(); Tv tv=new Tv();
tv.working();
} }

这样使用的不好处就是,如果Phone类和TV类一旦改变,就得改变上述代码,可以说类Test10依赖于Phone类和TV类,称这种依赖为耦合:使用者直接使用了具体类,表示当前类依赖该具体类。这样当这个具体类发生变化,使用者将受到影响。

为了降低这种影响,引入工厂模式:

增加一个工厂类

 class Factory{
public static Work getWork(String product){
if("phone".equals(product)){
return new Phone();
}else if("tv".equals(product)){
return new Tv();
}
return null;
}
}

这样Test10类的代码就可以为:

 public class Test10 {

     public static void main(String[] args) {
//依赖接口
Work work=Factory.getWork("tv");
if(work!=null){
work.working();
}
} }

这样它由依赖一个具体类转化为依赖接口,降低了耦合,体现了面向接口编程的思想。

这样具体类的变化不会影响到它。

这样写代码虽说和上述结果一样,但是可扩展性增强,维护性更强。

————————————————————————欢迎各位博友指出不足之处,多多交流。

Java模式—简单工厂模式的更多相关文章

  1. Java设计模式 -- 简单工厂模式(SimpleFactory)

    一.什么是简单工厂模式 简单工厂模式属于类的创建型模式,又叫做静态工厂方法模式.通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类. 二.模式中包含的角色及其职责 1.工厂(C ...

  2. Java设计模式之工厂模式(简单工厂模式+工厂方法模式)

    摘自http://blog.csdn.net/jason0539/article/details/23020989 在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是 ...

  3. java 之 简单工厂模式(大话设计模式)

    以前只是看设计模式,每次看完都去理解一次,并没有手动去写代码,所以理解的还不是很深刻,最近查看框架源码,发现很多地方用到的都是设计模式,因为对设计模式理解的不够深刻,所以源码查看进度很慢!现在决定来温 ...

  4. Java实现简单工厂模式

    昨天看了一下设计模式,复习了一下简单工厂模式,做个笔记,浅淡一下我对简单工厂模式的理解.书上使用的是C#,因为我所学的是Java,所以本人就用Java实现了一遍.如果有讲的不对的地方,希望能够指出来. ...

  5. Java反射+简单工厂模式总结

    除了 new 之外的创建对象的方法 通过 new 创建对象,会使得程序面向实现编程,先举个例子,某个果园里现在有两种水果,一种是苹果,一种是香蕉,有客户想采摘园子里的水果,要求用get()方法表示即可 ...

  6. 设计模式(java)--简单工厂模式之女娲造人.水果农场

    女娲抟土造人 话说:“天地开辟,未有人民,女娲抟土为人.”女娲需要用土造出一个个的人,但在女娲造出人之前,人的概念只存在于女娲的思想里面. 女娲造人,这就是简单工厂模式的应用.  首先,在这个造人的思 ...

  7. Java设计模式-简单工厂模式(Static Factory Method)

    简单工厂模式(Static Factory Method) 简单工厂模式是类的创建模式,又叫静态工厂方法(Static Factory Method)模式.简单工厂模式是由一个工厂对象决定创建出哪一种 ...

  8. java的简单工厂模式

    目录 代码讲解 UML图解简单工厂 优点 缺点: 改进: 代码讲解 产品功能接口: /** * 定义接口,抽象出产品都具有的功能 */ interface Produce { void method( ...

  9. js原生设计模式——3简单工厂模式\简单工厂模式封装简单对象

    1.Factory基本写法 <!DOCTYPE html><html lang="en"><head>    <meta charset= ...

随机推荐

  1. IntelliJ IDEA 2017版 使用笔记(十一) Debug操作:IDEA 快捷键

    调试功能;            缩短项目时间,调高阅读源码的能力.   一.添加断点,选中一行代码,双击即可生成断点(快捷键:ctrl+F8)                二.单步运行,快捷键:s ...

  2. 第03章:MongoDB启动参数说明

    ①基本配置 --quiet # 安静输出 --port arg # 指定服务端口号,默认端口27017 --bind_ip arg # 绑定服务IP,若绑定127.0.0.1,则只能本机访问,不指定默 ...

  3. KindEditor4.x整合教程-Xproer.WordPaster

    1.1. 集成到KindEditor4.x 主要步骤如下: 1.上传插件文件夹 2.上传WordPaster文件夹   3.在引用页面为KindEditor增加插件按钮 <html xmlns= ...

  4. CMake和静态库顺序

    目录 目录 1 前言 1 方法 1 附1:链接静态库的顺序问题 2 附2:再议GCC编译时的静态库依赖次顺问题 3 附3:gcc链接参数--whole-archive的作用 4 附4:让有些“-l”链 ...

  5. MFC源码实现文件对照表

    CDocManager类[实现文件] /SRC/DOCTEMPL.CPP CSingleDocTemplate类[实现文件] /SRC/DOCSINGL.CPP CWinApp::OnFileOpen ...

  6. 重建控制文件ORA-12720

    重建过程出错:ORA-01503: CREATE CONTROLFILE failedORA-12720: operation requires database is in EXCLUSIVE mo ...

  7. 读书笔记 Bioinformatics Algorithms Chapter5

    Chapter5  HOW DO WE COMPARE DNA SEQUENCES  Bioinformatics Algorithms-An_Active Learning Approach htt ...

  8. c 语言申明头文件和实现分开简单例子

    很多时候,看到很多c函数的声明和实现是分开的.声明放在头文件,实现却放在另一个文件,最后函数被其他文件调用. 下面以简单例子说明. 一.声明部分 /* test.h */ #include <s ...

  9. git windows下载安装 (git命令)

    Set up git At the heart of GitHub is an open source version control system (VCS) called Git. Git is ...

  10. SSM_CRUD新手练习(3)创建数据库

    在上一节我们已经完成了基本的SSM配置,现在需要创建我们数据库. 我们需要两张表分别为tbl_emp(员工表)和tbl_dedpt(部门表).同时d_id是部门表对应dept_id的外键. 需要注意的 ...