java中最通常通过new()来创建一个对象,new方法默认执行类的无参构造函数创建对象,但有时候我们直接new()创建对象会带来一些问题,比如我问在创建一个对象,选择将这个对象的的那个子类实例化,用这个子类的那个构造方法进行实例化,在实例化这个对象之前需要将这个对象的依赖实例化。

为了能够方便的实例化对象,而不要注重关注对象实例化的细节和复杂的过程,所以有了工厂模式,从工厂中直接获取我们想要的某个实例化对象

public classCupA {

privateString drink;

publicString getDrink() {

returndrink;}

public voidsetDrink(String drink) {

this.drink= drink;}

}

public classNoFactoryPatten {

public static voidmain(String[] stg) {

//得到A杯子CupA cupa = newCupA();//得到B杯子CupB cupb = newCupB();}

}

简单工厂模式(静态工厂方法模式)

public interfaceCup {

/***喝水**/String drink();}

public classCupA implementsCup {

/***喝水**/@OverridepublicString drink() {

//TODO Auto-generated method stubreturn null;}

}

public classCupB implementsCup {

/***喝水**/@OverridepublicString drink() {

//TODO Auto-generated method stubreturn null;}

}

public classSimplFactory {

publicCup createCup(String name) {

Cup cup = null;if("A".equals(name)) {

cup = newCupA();} else if("B".equals(name)) {

cup = newCupB();}

returncup;}

}

从上面代码可以看出,简单工厂模式,随着杯子种类的增加,工厂类的createCup也会相应的增加对应的杯子类型,只是把杯子这个产品,抽象了,并没有把工厂抽象

工厂方法模式

将简单工厂模式中的,方法具体到工厂的子类里面,从而释放工厂类,使每个类的功能具体化,代码更加简洁明了,符合开闭原则,但由于要实例化每一个工厂类,代码量会增加而简单工厂模式中只需要实例化一个工厂类。如果需要新加一个产品的实现,只需要在新加一个工厂的实现类就可以了

抽象工厂模式

将工厂也抽象化,用来新加一个产品群,不能单个的新加单个的某个产品。

java抽象工厂模式_java简单工厂模式和抽象工厂模式相关推荐

  1. java简单工厂模式_Java 简单工厂模式

    Java 简单工厂模式 2014-05-28·WeaponX 3717 次浏览 ## 介绍 简单工厂模式又称静态工厂模式. 简单工厂模式由工厂类角色.抽象产品角色和具体产品角色组成. 工厂类角色是本模 ...

  2. java设计模式中不属于创建型模式_Java设计模式(5)——创建型模式之建造者模式(Builder)...

    一.概述 概念 将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示.(与工厂类不同的是它用于创建复合对象) UML图 主要角色 抽象建造者(Builder)--规范建造方法与结果返还 ...

  3. java的visitor模式_java设计模式(二十一)访问者模式(Visitor)

    介绍 访问者模式(Visitor Pattern):表示一个作用于某对象结构中的各元素的操作,它使我们可以在不改变各元素的类的前提下定义作用于这些元素的新操作.访问者模式是一种对象行为型模式. 简单来 ...

  4. java消费者生产者设计模式_java 多线程并发设计模式之四: 生产者消费者模式

    生产者消费者模式是一个经典的多线程设计模式,其核心思想是:有两类线程和一个内存缓冲区或者队列, 一类线程发起任务,并提交到队列中.另一类线程用来处理这些任务,叫做消费者线程. 这两类线程进行通信的桥梁 ...

  5. java 装饰器模式_Java设计模式(9)----------装饰器模式

    1.介绍 装饰器模式是一种结构型的设计模式.使用该模式的目的是为了较为灵活的对类进行扩展,而且不影响原来类的结构.有同学说可以通过继承的方式进行实现啊,没错,继承的确可以实现,但是继承的成本相对比较高 ...

  6. java io 装饰者_Java IO 体系(一): 装饰者模式

    前言. IO中常见的使用方式 DataOutputStream out = new DataOutputStream( new BufferedOutputStream( new FileOutput ...

  7. was修改类加载模式_java基础——单例(Singleton)模式介绍

    基本概括 详解 一.单例模式定义: 单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 二.单例模式特点: 1.单例类只能有一个实例. 2.单例类必须自己创建自己的唯一实例. 3 ...

  8. java 解析xls 文件_java简单解析xls文件的方法示例【读取和写入】

    本文实例讲述了java简单解析xls文件的方法.分享给大家供大家参考,具体如下: 读取: import java.io.*; import jxl.*; import jxl.write.*; imp ...

  9. java 实现ps功能_java 简单图片,可以实现ps的几个小滤镜

    java 简单图片,可以实现ps的几个小滤镜 以下教你实现图片马赛克,黑白画,珠纹化,油画效果等处理技术原理及实现.看完自己也可以简单的玩一玩. 1. 需要用到的包 java.awt // 用于创建用 ...

  10. java 统计汉字个数_Java简单统计字符串中汉字,英文字母及数字数量的方法

    本文实例讲述了java简单统计字符串中汉字,英文字母及数字数量的方法.分享给大家供大家参考,具体如下: package org.zhy.demo.algorithm; /** * 有一个字符串,其中包 ...

最新文章

  1. linux系统的初化始配置
  2. 汽车之家基于 Flink + Iceberg 的湖仓一体架构实践
  3. 在mysql中插入日期
  4. java jtree_Java JTree
  5. REVERSE-COMPETITION-HGAME2022-Week4
  6. php raido mysql,linux – 如何停止并修复已失败且I / O挂起的RAID 5阵列?
  7. 【数据仓库】数据集市
  8. SLAM中直接法分类及对应的项目
  9. 关于webapp的一点思考
  10. Security+ 学习笔记40 网络安全设备
  11. Scala关于变长参数
  12. 【编程软件】keli自定义跳转函数及返回跳转原位置按键(附赠MDK525版本下载地址)
  13. 认知无线电网络中的频谱切换理论
  14. 信息收集之namp扫描
  15. 一张图知道优秀项目经理应该具备的能力
  16. 面试精选逻辑推理题总结
  17. TSP问题(推销员问题)
  18. 激光雷达Velodyne16配置及录制rosbag
  19. PAC(期间平均成本)
  20. 【网络】VLAN 及其配置详解

热门文章

  1. 反编译工具ILSpy的下载与使用
  2. 计算机中丢失python27 dll_python27.dll
  3. 【字体分享】设计师常用的日系中文字体
  4. TiledMap快捷键
  5. GIS中常用的高程系
  6. 整数规划---指派问题
  7. linux ftell函数(用于得到文件位置指针当前位置相对于文件首的偏移字节数)计算文件的字节大小
  8. 怎么用proteus软件仿真单片机程序?
  9. 集合对象转json数组
  10. JDK1.8中文帮助文档下载