菜鸟硕枫设计模式系列之3 工厂方法模式
发布日期:2021-10-01 08:45:05 浏览次数:1 分类:技术文章

本文共 1525 字,大约阅读时间需要 5 分钟。

工厂方法模式也是一种创建对象的设计模式,属于创建型设计模式。工厂方法模式定义了对象工厂接口,抽象出了获取对象实例方法,而将具体的创建对象工作放到了具体的类创建工厂进行。
工厂方法模式类图:
[img]http://dl.iteye.com/upload/attachment/364517/538be5db-fcb6-38f8-bb2b-480cf3b9bdab.jpg[/img]
具体实现代码示例:
工厂接口:
package factoryPattern; public interface Factory {
Fruit factorygetInstance(); }
具体工厂1:
package factoryPattern; public class AppleFactory implements Factory{
public Fruit factorygetInstance(){
// TODO Auto-generated method stub return new Apple(); } }
具体工厂2:
package factoryPattern; public class PearFactory implements Factory{
public Fruit factorygetInstance(){
// TODO Auto-generated method stub return new Pear(); } }
对象接口:
package factoryPattern; public interface Fruit {
String getFruitName(); }
具体对象1:
package factoryPattern; public class Apple implements Fruit{
@Override public String getFruitName(){
// TODO Auto-generated method stub return "This is apple"; } }
具体对象2:
package factoryPattern; public class Pear implements Fruit {
@Override public String getFruitName() {
// TODO Auto-generated method stub return "This is pear"; } }
测试类:
package factoryPattern; public class FactoryMethodTest {
public static void main(String[] args){
Factory fac = new AppleFactory(); System.out.println(fac.factorygetInstance().getFruitName()); fac = new PearFactory(); System.out.println(fac.factorygetInstance().getFruitName()); } }
说明:
与简单工厂模式相比,工厂方法模式将对象的创建与抽象工厂分离,当要新增类对象的创建时,只需要实现一个具体工厂和一个具体的类(新增类对象的类)即可,满足了开闭原则。缺点在于,多出了很多具体的创建对象工厂,存在一种类对象,则要有相应的对象工厂对应。

转载地址:https://blog.csdn.net/iteye_2655/article/details/81970351 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:菜鸟硕枫设计模式系列之4 抽象工厂模式
下一篇:菜鸟硕枫设计模式系列之2 简单工厂模式

发表评论

最新留言

不错!
[***.144.177.141]2024年03月24日 00时43分39秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

s2-045 php exp,S2-045-EXP.py --Struts2任意代码执行漏洞 (S2-045,CVE-2017-5638) 2019-04-21
linux sdk 窗口句柄,Venus: 针对Linux平台上,对常用的系统API进行面向对象的封装SDK。... 2019-04-21
c语言程序设计 科学出版社习题答案,C语言程序设计(科学出版社)第4章 课后习题参考答案.doc... 2019-04-21
c语言 无错 但只运行一半,求哈夫曼编码时程序运行到一半就终止了,编译无错... 2019-04-21
deepin linux 2014安装,2014.2版本的Deepin虚拟机安装浅谈(就是深度Linux) 2019-04-21
android 限速工具,Android下载器之限速篇 2019-04-21
html刷新ajax实现原理,AJAX的原理—如何做到异步和局部刷新 2019-04-21
html中列表菜单加文字请选择,html中下拉菜单 2019-04-21
读书郎平板中android,读书郎学生平板电脑怎么用 使用方法详解【图文】 2019-04-21
html5 调用摄像头 支持IE,JS调用本地摄像头拍照(兼容各大浏览器及IE8+) 2019-04-21
rust和gta5哪个吃配置_盘点4款Steam“自由度”很高的游戏,GTA5众所周知,目前最热门... 2019-04-21
es审计日志_elasticsearch 事务日志translog 2019-04-21
dw1510_超低温种子储存柜 2019-04-21
python用opencv计算汽车间距_计算机视觉:利用OpenCV和Python进行车辆计数详细步调... 2019-04-21
文件未找到mathpage.wll_解决MathPage.wll文件找不到的问题(找了好久的良心之作)... 2019-04-21
docker 查看容器磁盘大小_查看 docker 容器使用的资源 2021-06-24
python consul服务发现_Prometheus+Consul服务自动发现监控 2021-06-24
excel提取不规则字段_利用excel服务器来实现3级或者更多级的层级关联 2021-06-24
@autowired注解的作用_只因多看了一眼提示,又一次刷新了@Autowired注释的认知 2019-04-21
ab753变频器参数怎么拷贝到面板_变频器不知道如何上手,厂家教你如何三点搞定设置变频器参数... 2019-04-21