注:例子根据菜鸟案例进行更生动的改编,并加以自己的理解



创建一个People接口

public interface People {void makeMoney();
}

实现了People接口的大儿子类

public class FirstSon implements People {@Overridepublic void makeMoney() {System.out.println("大儿子在赚钱。。");}
}

同样实现了People接口的二儿子类

public class SecondSon implements People {@Overridepublic void makeMoney() {System.out.println("二儿子在赚钱。。");}
}

我们再创建一个工厂类:(作用:根据传入名字将子类对象返回)

public class Factory {public People setDetailPeople(String name){if(name == null){return null;}if(name.equalsIgnoreCase("first")){return new FirstSon();} else if(name.equalsIgnoreCase("second")){return new SecondSon();}return null;}
}

最后,我们使用这个工厂(使用子类对象 并调用子类中的方法)

public class UseFactory {public static void main(String[] args) {Factory factory = new Factory();
//      People people = factory.setDetailPeople("first");People people = factory.setDetailPeople("second");people.makeMoney();}
}

输出结果为:二儿子在赚钱。。

如果我们把使用工厂的方法再修改一下:

public class UseFactory {public static void main(String[] args) {getSon("first").makeMoney();}public static People getSon(String name){Factory factory = new Factory();return factory.setDetailPeople(name);}
}

同理,我们不仅可以将name作为参数传入方法,这样对外只需传入一个名字即可,而不用每次都new对象;同理 如果需要 可以将name写入配置文件中,从配置文件中获取,达到灵活配置的目的;

其实,设计模式最主要的作用还是解耦合,做到新增功能不需要更改现有功能,不会出现新增功能将原有功能改崩的情况,推荐《大话设计模式》,看完第一章,就能体会解耦合的优点了。

【设计模式】工厂模式的作用?工厂模式有什么优点?相关推荐

  1. 设计模式(0)简单工厂模式

    0 设计模式基础 0.0 设计模式的定义 先来看一下设计模式常见的书面定义: 设计模式是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他 ...

  2. JavaScript设计模式--简单工厂模式例子---XHR工厂

    JavaScript设计模式--简单工厂模式例子---XHR工厂 第一步,Ajax操作接口(目的是起一个接口检测作用) (1)引入接口文件 //定义一个静态方法来实现接口与实现类的直接检验 //静态方 ...

  3. .NET设计模式(5):工厂方法模式(Factory Method)

    概述 在软件系统中,经常面临着"某个对象"的创建工作,由于需求的变化,这个对象的具体实现经常面临着剧烈的变化,但是它却拥有比较稳定的接口.如何应对这种变化?提供一种封装机制来隔离出 ...

  4. 笔记:设计模式(3)-Abstract Factory抽象工厂模式

      工厂模式的起源 1.变化点在"对象的创建",因此就封装"对象创建": 2.面向接口编程,依赖接口,而非依赖实现. 动机(Motivation) 在系统中,经 ...

  5. getresourceasstream方法_【设计模式】第三篇:一篇搞定工厂模式【简单工厂、工厂方法模式、抽象工厂模式】...

    文章系列目录(持续更新中): [设计模式]第一篇:概述.耦合.UML.七大原则,详细分析总结(基于Java) [设计模式]第二篇:单例模式的几种实现And反射对其的破坏 一 为什么要用工厂模式 之前讲 ...

  6. 【Java设计模式 设计模式与范式】创建型模式 四:抽象工厂模式

    本篇Blog继续学习创建型模式,创建型模式的主要关注点是怎样创建对象,它的主要特点是将对象的创建与使用分离,这样可以降低系统的耦合度,使用者不需要关注对象的创建细节.本篇学习的是抽象工厂模式.由于学习 ...

  7. 【秒懂设计模式】总述及工厂模式

    秒懂设计模式--总述及工厂模式 [前言]每次一说道"设计模式"总会给人一种误区,认为这些东西,只有那些"技术大牛"才会玩的东西.但是给我的感觉却恰恰相反,它更应 ...

  8. 2.5万字详解23种设计模式—创建型模式(简单工厂、工厂方法、抽象工厂、单例-多线程安全详解、建造者、原型)的详细解读、UML类图

    本文简述了各大设计模式,并通过UML和代码详细说明.本文大约共 2.5W 字,建议收藏.下方是本文的目录: 一.设计模式的认识 二.设计模式的分类 根据其目的 根据范围 三.设计模式的优点 四.设计模 ...

  9. 设计模式——工厂模式(简单工厂模式、工厂方法模式、抽象工厂模式)

    声明: 本博客参考C语言中文网:C语言中文网连接 主要记录学习以下内容: 一.简单工厂模式 二.工厂方法模式 三.抽象工厂模式 每个大要点都主要包括以下两部分内容: (1)基本概念和模型结构(包括一些 ...

最新文章

  1. 现在的教育:感慨之一
  2. 漫谈promise使用场景
  3. Sql 行转列 STUFF
  4. PHP陈明忠_《PHP网站开发案例教程》习题答案
  5. 西雅图治安_数据科学家对西雅图住宿业务的分析
  6. c语言3种链接属性: 外部(external), 内部(internal),无设置(none)
  7. python 修行之路(1-自我介绍及python环境的搭建)
  8. #includeiostream与#includeiostream.h的区别
  9. NetBSD Make源代码阅读二:链表之创建与销毁
  10. (3)通过输入参数(测量数据)构建三维体模型(02)
  11. 一系列JavaScript的基础工具
  12. perl:非贪婪的数量词
  13. catv系统主要有哪三部分组成_光纤通信系统的组成与特点
  14. jxbrowser 6.18 以及 6.16 破解 整合
  15. 高仿城通网盘php,PHP代码提取城通网盘直链跳过广告下载
  16. 如何将各种电子书格式转换为PDF格式
  17. 微信小助手都有什么功能?WeChatPlugin mac最新版使用教程
  18. String转成JSON或String转为list后转为JSON或String转为map后转为JSON
  19. 两对等位基因控制一对相对性状的规律(基因互作)
  20. 【电脑使用】修改注册表——让有密码的电脑开机自动登录

热门文章

  1. 软件离散数学复习笔记资料
  2. tm项目和fp项目_TM软件项目介绍
  3. abp集成abp.Dapper
  4. NProgress.js进度条
  5. 泰语专业论文选题有什么建议吗?
  6. python图片切割以及识别图片中的文字
  7. C#调用百度地图API,根据地名获取经纬度geocoding
  8. csdn博客贴代码方式
  9. linux下terminal重命名方法
  10. 使用CIFAR10数据集完成知识蒸馏(参照了快乐就好_Peng博主的博客)致谢