一、姑且用一个这样的图表示一下:

 二、简单工厂的基本简介:百度释义:又叫静态工厂方法,不属于那23种设计模式之一。

动态决定哪个类被实例化,不必事先知道哪个类要被实例化!

三、举例:QQ里面常用发表情的:

1、 表情 b=new Smile();//这种应该是很熟悉的创建方式

2、表情 b=表情工厂.createBiaoQing(“表情内容”);

四、角色与结构:


 工厂类角色(creator):BQFctory,在creat方法下创建产品对象(smile,cry);

抽象产品角色(product):BiaoQing;定义简单工厂创建的对象的父类或它们共同拥有的接口。可以是一个类、抽象                     类或接口。(我这里是一个接口);

具体产品角色concreateproduct:Smile,Cry;工厂具体产出的对象。

五、根据代码分析:

BiaoQing接口,仅需定义所需要的方法

package SimpleFctory;
public interface BiaoQing {public void show();
}

Smile类实现BiaoQing中的方法

package SimpleFctory;

public class Smile implements BiaoQing{public void show() {System.out.println("smile的显示方法");}
}

Cry类实现BiaoQing中的方法

package SimpleFctory;
public class Cry implements BiaoQing{public void show() {System.out.println("cry的显示方法");}
}

BQFctory的create方法的返回类型是BiaoQing,然后根据括号内的内容返回不同的类型

package SimpleFctory;
public class BQFctory {public static BiaoQing create(String type){//为了方便调用,我们在这里将其方法设为公开静态的if(type.equals("smile")){//根据创建方法后的类型来判断需要返回什么类型return new Smile();}else if(type.equals("cry")){return new Cry();}elsereturn null;}
}

测试:

package SimpleFctory;
public class Test {public static void main(String[] args) {BiaoQing b1=BQFctory.create("smile");b1.show();BiaoQing b2=BQFctory.create("cry");b2.show();}
}

结果:smile的显示方法

cry的显示方法

我们反过来,从主程序开始看就很好理解了,首先调用BQFctory里的静态方法create,根据方法提供的type返回所需要的类型,然后调用相应的方法!

六、优点:

1、不必事先知道哪个类要被实例化

2、只需在需要的地方调用即可,无需像 “ 表情 b=new Smile() "这样重新实例化一个对象,方便,同时也节省了内存!

七、缺点:

1、由于所需要的具体产品待定,如果很多的话就要重新添加新的类,并且要在工厂类(此例中的BQFctory类)中添加判断语句,扩展比较麻烦,好像违背了OOP的开闭原则吧!所以最好是用在所需创建的对象比较少的情形上!

就这么点理解了!

设计模式-创建型-工厂-简单工厂模式相关推荐

  1. 『创建型』简单工厂SimpleFactory、工厂方法FactoryMethod、抽象工厂AbstractFactory

    为什么80%的码农都做不了架构师?>>>    几点说明 永远不要纠结于在什么时候使用什么模式 永远不要纠结于什么模式适用于什么情景 永远不要去死记任何的模式 并不是说,23种设计模 ...

  2. 设计模式(4)—— 简单工厂模式(Simple Factory,创建型)

    1.概述 使用设计模式可以提高代码的可复用性.可扩充性和可维护性.简单工厂模式(Simple Factory Pattern)属于创建型模式.简单工厂模式,由一个工厂对象决定创建出哪一种产品类的实例, ...

  3. 设计模式-创建型模式-简单工厂模式

    工程地址:设计模式-简单工厂源码-C++文档类资源-CSDN下载C++设计模式-创建型模式-简单工厂模式源码更多下载资源.学习资料请访问CSDN下载频道.https://download.csdn.n ...

  4. 设计模式-创建型模式-工厂模式(工厂三兄弟) TypeScript

    设计模式-创建型模式-工厂模式(工厂三兄弟) TypeScript 简单工厂模式 定义一个接口,三个具体类.然后书写如下,通过选择,生产出相应的对象 // 定义Shape接口 interface Sh ...

  5. 设计模式-创建型模式-工厂模式(工厂三兄弟)

    设计模式-创建型模式-工厂模式(工厂三兄弟) 工厂模式分为简单工厂,工厂方法,抽象工厂. 简单工厂模式 一个接口,三个具体类,一个工厂,通过选择,生产出对应的对象. package demo2;pub ...

  6. 设计模式----创建型设计模式(单例模式、工厂方法模式、构建者模式)

    创建型设计模式 单例模式(Singleton Pattern) 单例模式介绍 代码演示 饿汉式(静态常量) 饿汉式(静态代码块) 懒汉式(线程不安全) 懒汉式(线程安全,同步方法) 懒汉式(线程安全, ...

  7. 设计模式-创建型模式-工厂方法模式

    工程源码:c++设计模式-创建型模式-工厂方法模式https://download.csdn.net/download/qq_40788199/85541617 码云:https://gitee.co ...

  8. 设计模式 ~ 创建型模式 ~ 工厂模式 ~ Factory Pattern。

    设计模式 ~ 创建型模式 ~ 工厂模式 ~ Factory Pattern. 文章目录 设计模式 ~ 创建型模式 ~ 工厂模式 ~ Factory Pattern. eg. 简单工厂模式. 结构. 优 ...

  9. 设计模式-创建型模式-抽象工厂模式

    工程源码:设计模式-创建型模式-抽象工厂模式https://download.csdn.net/download/qq_40788199/85544119 码云:设计模式-创建型模式-抽象工厂模式ht ...

  10. 每天学习一个设计模式(八):创建型之抽象工厂模式

    目录 一.基本概念 二.通俗解释 三.应用场景 1.使用简单工厂模式的解决方案 2.抽象工厂模式 抽象工厂模式结构 在什么情况下应当使用抽象工厂模式 抽象工厂模式的起源 四.抽象工厂模式的优缺点 抽象 ...

最新文章

  1. Python中递增和递减运算符的行为
  2. oracle12c 新建表空间
  3. tensorflow随笔-条件语句-tf.cond
  4. 万用表怎么测量电池容量_如何使用万用表,使用万用表测量常用的六个方面
  5. Android 系统文件夹功能(转)
  6. golang dlv 远程调试
  7. JavaEE_Spring Framework
  8. 微信小程序开发入门与实践
  9. 2020软考信息系统项目管理师-案例分析真题解析视频课程-任铄(小任老师)-专题视频课程...
  10. class文件拒绝访问
  11. 学了Java可以做什么工作
  12. zip_longest
  13. 浏览器无法访问此网站,连接已被重置,无法加载
  14. idea创建三种应用程序的方法:springboot,控制台程序,windows服务程序
  15. Java杂谈——求所有的4位吸血鬼数字
  16. 中国程序化购买广告解析:RTB/DSP/Ad Exchange/SSP/DMP,思维导图
  17. pyside6 - 简单了解
  18. 入职华为外包一个月后,我离职向“北上广深”流浪了...
  19. python裁剪图片边缘模糊_Python OpenCV 图片高斯模糊
  20. Qt(三)--- 实现QQ登陆界面头像状态栏的功能

热门文章

  1. 读书感受 之 《乌合之众》
  2. 【八大排序】Shell排序
  3. 未能加载文件或程序集“System.Web.DataVisualization.Design”或它的某一个依赖项。生成此程序 集的运行时比当前加载的运行时新,无法加载此程序集。...
  4. 刑事案件中,辩护律师具体能做什么?
  5. 女生转行IT和汉子要考虑的问题有什么不一样?
  6. 2022杭电多校(九)
  7. 网瘾专家陶宏开:沉迷网游3年智商将下降10%
  8. Redis解决缓存穿透问题
  9. java指针的数组_Java中的数组是指针
  10. php 查看数组的指针,php数组指针