【设计模式】工厂模式的作用?工厂模式有什么优点?
注:例子根据菜鸟案例进行更生动的改编,并加以自己的理解
创建一个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写入配置文件中,从配置文件中获取,达到灵活配置的目的;
其实,设计模式最主要的作用还是解耦合,做到新增功能不需要更改现有功能,不会出现新增功能将原有功能改崩的情况,推荐《大话设计模式》,看完第一章,就能体会解耦合的优点了。
【设计模式】工厂模式的作用?工厂模式有什么优点?相关推荐
- 设计模式(0)简单工厂模式
0 设计模式基础 0.0 设计模式的定义 先来看一下设计模式常见的书面定义: 设计模式是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他 ...
- JavaScript设计模式--简单工厂模式例子---XHR工厂
JavaScript设计模式--简单工厂模式例子---XHR工厂 第一步,Ajax操作接口(目的是起一个接口检测作用) (1)引入接口文件 //定义一个静态方法来实现接口与实现类的直接检验 //静态方 ...
- .NET设计模式(5):工厂方法模式(Factory Method)
概述 在软件系统中,经常面临着"某个对象"的创建工作,由于需求的变化,这个对象的具体实现经常面临着剧烈的变化,但是它却拥有比较稳定的接口.如何应对这种变化?提供一种封装机制来隔离出 ...
- 笔记:设计模式(3)-Abstract Factory抽象工厂模式
工厂模式的起源 1.变化点在"对象的创建",因此就封装"对象创建": 2.面向接口编程,依赖接口,而非依赖实现. 动机(Motivation) 在系统中,经 ...
- getresourceasstream方法_【设计模式】第三篇:一篇搞定工厂模式【简单工厂、工厂方法模式、抽象工厂模式】...
文章系列目录(持续更新中): [设计模式]第一篇:概述.耦合.UML.七大原则,详细分析总结(基于Java) [设计模式]第二篇:单例模式的几种实现And反射对其的破坏 一 为什么要用工厂模式 之前讲 ...
- 【Java设计模式 设计模式与范式】创建型模式 四:抽象工厂模式
本篇Blog继续学习创建型模式,创建型模式的主要关注点是怎样创建对象,它的主要特点是将对象的创建与使用分离,这样可以降低系统的耦合度,使用者不需要关注对象的创建细节.本篇学习的是抽象工厂模式.由于学习 ...
- 【秒懂设计模式】总述及工厂模式
秒懂设计模式--总述及工厂模式 [前言]每次一说道"设计模式"总会给人一种误区,认为这些东西,只有那些"技术大牛"才会玩的东西.但是给我的感觉却恰恰相反,它更应 ...
- 2.5万字详解23种设计模式—创建型模式(简单工厂、工厂方法、抽象工厂、单例-多线程安全详解、建造者、原型)的详细解读、UML类图
本文简述了各大设计模式,并通过UML和代码详细说明.本文大约共 2.5W 字,建议收藏.下方是本文的目录: 一.设计模式的认识 二.设计模式的分类 根据其目的 根据范围 三.设计模式的优点 四.设计模 ...
- 设计模式——工厂模式(简单工厂模式、工厂方法模式、抽象工厂模式)
声明: 本博客参考C语言中文网:C语言中文网连接 主要记录学习以下内容: 一.简单工厂模式 二.工厂方法模式 三.抽象工厂模式 每个大要点都主要包括以下两部分内容: (1)基本概念和模型结构(包括一些 ...
最新文章
- 现在的教育:感慨之一
- 漫谈promise使用场景
- Sql 行转列 STUFF
- PHP陈明忠_《PHP网站开发案例教程》习题答案
- 西雅图治安_数据科学家对西雅图住宿业务的分析
- c语言3种链接属性: 外部(external), 内部(internal),无设置(none)
- python 修行之路(1-自我介绍及python环境的搭建)
- #includeiostream与#includeiostream.h的区别
- NetBSD Make源代码阅读二:链表之创建与销毁
- (3)通过输入参数(测量数据)构建三维体模型(02)
- 一系列JavaScript的基础工具
- perl:非贪婪的数量词
- catv系统主要有哪三部分组成_光纤通信系统的组成与特点
- jxbrowser 6.18 以及 6.16 破解 整合
- 高仿城通网盘php,PHP代码提取城通网盘直链跳过广告下载
- 如何将各种电子书格式转换为PDF格式
- 微信小助手都有什么功能?WeChatPlugin mac最新版使用教程
- String转成JSON或String转为list后转为JSON或String转为map后转为JSON
- 两对等位基因控制一对相对性状的规律(基因互作)
- 【电脑使用】修改注册表——让有密码的电脑开机自动登录