Java 设计模式之抽象工厂模式 (四)

  • 定义:为创建一组相关或相互依赖的对象提供一个借口,而且无需指定他们的具体类;
  • 优点:使用抽象工厂来创建需要的对象,不需要知道具体的实现是谁,不用关心对象是如何创建出来的,只需知道工厂类是谁就能创建出一个对象;
  • 缺点:如果需要给整个产品族添加一个新的产品,那么就需要修改抽象工厂,这样就会导致修改所有的工厂实现类;

上代码

 

 

 

 

 

 

 

 

 

 

/*** 手机电池接口*/
public interface Cell {void cellCapacity();//电池容量
}

/*** 华为的接口*/
public interface HuaWei {void phoneColor();//手机颜色void phonePrice();//手机价格void phoneSize();//手机尺寸
}
/*** 华为工厂的接口*/
public interface HuaWeiFactory {HuaWei createHuaWei();//创建华为手机Cell createCell();//创建电池
}
/*** Mate20手机的产品类*/
public class Mate20 implements HuaWei {public Mate20() {this.phoneColor();this.phonePrice();this.phoneSize();}@Overridepublic void phoneColor() {System.out.println("Mate20黑色");}@Overridepublic void phonePrice() {System.out.println("Mate20价格是5000");}@Overridepublic void phoneSize() {System.out.println("Mate20尺寸是6.5英寸");}
}
public class Mate20Cell implements Cell {public Mate20Cell() {this.cellCapacity();}@Overridepublic void cellCapacity() {System.out.println("Mate20的电池电量是3000毫安");}
}
/*** 生产华为Mate20的工厂*/
public class Mate20Factory implements HuaWeiFactory {public Mate20Factory(){this.createHuaWei();this.createCell();}@Overridepublic HuaWei createHuaWei() {return new Mate20();}@Overridepublic Cell createCell() {return new Mate20Cell();}
}
public class P20 implements HuaWei {public P20() {this.phoneColor();this.phonePrice();this.phoneSize();}@Overridepublic void phoneColor() {System.out.println("P20的颜色是蓝色");}@Overridepublic void phonePrice() {System.out.println("P20的价格是2000");}@Overridepublic void phoneSize() {System.out.println("P20的尺寸是5.5英寸");}
}
public class P20Cell implements Cell {public P20Cell() {this.cellCapacity();}@Overridepublic void cellCapacity() {System.out.println("华为P20电池是1900毫安");}
}
/*** 华为P20的生产工厂*/
public class P20Factory implements HuaWeiFactory {public P20Factory(){this.createHuaWei();this.createCell();}@Overridepublic HuaWei createHuaWei() {return new P20();}@Overridepublic Cell createCell() {return new P20Cell();}
}
public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);createMate20();createP20();}private void createMate20() {System.out.println("生产华为Mate20");
//        HuaWeiFactory factory = new Mate20Factory();new Mate20Factory();System.out.println("----------华丽丽的分界线----------------");}private void createP20() {System.out.println("生产华为P20");
//        HuaWeiFactory factory = new P20Factory();new P20Factory();}
}

 

 

 

 

 

 

以上就是一个简单的抽象工厂模式了,欢迎大家指正...

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/66354.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手机:华为手机中Mate、P、nova、畅享有什么含义,看完你就懂了

目录 Mate系列:顶级商务旗舰 P系列:时尚拍照旗舰 nova系列:时尚新星 麦芒:年轻人线下机 畅享:千元机主打 很多人在购买华为手机时,看到华为有Mate系列、P系列、nova系列、麦芒系列、畅享系列,这…

公有云、私有云和混合云的区别及优缺点,云南企业上云必须先了解清楚

随着云计算的逐渐兴起,云计算最基础的产品云主机非常受欢迎,其中云主机分为公有云、私有云和混合云,许多企业准备把数据往云上迁移,不知道选择那类云主机,接下来云南天成科技吴经理来谈谈什么是公有云、什么是私有云、…

官宣:“1847专家天团”正式出道

- 大咖来袭!- 1847专家天团 正式出道 — 与专家交流,让技术成长 — C位出道实力出征 9位西门子工业领域技术专家,带你聊技术,带你走捷径,为你点亮技术道路上前进的那盏灯。若你渴望技术提升,希望避开调…

Matrix AI Lab -84天寒假总结及新学期展望

今天是2021.3.14,是白色情人节,也是阴历二月二,先祝大家情人节快乐。被迫上岗,总结一下这次超长寒假自己被胖揍的过程以及成长。 文章目录 先捋捋我的原本假期规划再来看看实际干了些神马东西关于没有PPT总结新学期计划 先捋捋我的…

总计超5万星!GitHub上10个超级好玩的项目

GitHub上不光有大神分享的干货,更有非常多好玩,却还有一定技术含量的项目。 这次小七给大家精选10个项目,从几百星的小众项目到3万星的超火项目全都有! 10个项目总计有5万多星,小七也给各位列出了项目链接。 1、高颜…

华为畅享20pro和荣耀play4哪个好

屏幕方面,华为畅享20 Pro搭载了一块6.5英寸珍珠屏,采用比较不同的20层玻璃镀膜工艺加工,还支持90Hz刷新率和180Hz采样率,在工艺方面超出了当下中端5G的水平。 华为畅享20pro更多使用感受和评价:https://www.huawei.com…

Mathematica绘制图形

绘制平面图形的命令 Plot 显函数绘图 ParametricPlot 参数方程绘图 PolarPlot 极坐标方程绘图 ContourPlot 隐函数绘图 ListPlot 绘制点列图 例 Plot[x Sin[1/x],{x,-1,1}] 例 绘制三维图形 Plot3D 绘制二元函数对应的空间曲面 ParametricPlot3D 绘制空间曲线、曲面参数方程对…

科研绘图——upset展示更复杂的交集情况

将几个数据集之间的交集进行可视化,除了可以利用Venn图外,还可以使用upset这种图形。这种方法是发表在2014年nature methods上面。Sets and intersections | Nature Methods upset图形大致是这个样子 图形基本含义 那怎么观察这种图形,或…

Python使用matplotlib可视化模拟学生成绩饼图

import matplotlib.pyplot as plt import numpy as np plt.rcParams[font.sans-serif] simhei plt.rcParams[axes.unicode_minus]FalseSQL [5,17,3] math [3,20,2] english [6,16,3] pyhton [11,12,2] text ["优秀","及格","不及格"]plt.s…

Pika在360的应用与实践

01 业务挑战 随着业务量快速发展,用户对 Redis 这种速查KV缓存型数据库需求越来越高,不仅要快,还要持久化安全。Redis 自身aof 可保证持久化数据,但是随着内存增长,高内存下aof文件过大,bgrewriteof 重写往…

电脑GIF制作软件哪个好 怎么做QQ表情包

Gif表情包是日常聊天中必不可少的,不仅可以活跃聊天氛围,还可以增加感情,平时我们聊天一般使用的都是软件中自带的一些表情包,其实是完全可以自己制作的,那电脑GIF制作软件哪个好,怎么做QQ表情包呢&#xf…

有什么好用的gif制作软件 制作GIF表情包教程

说到gif,我们应该都不会陌生,平时网上聊天经常会用到各式各样的gif 动图,每个人喜欢的类型也都有所不同,曾经gif刚出来的时候,有一股斗图风盛行,那说了这么多,你知道如何制作gif动图&#xff0c…

怎样自制微信gif动态表情包?

在使用QQ、微信等聊天工具进行聊天的时候,很多人都喜欢在聊天的过程中不时的使用一张gif动态表情包,既能够表达出自身的想法,有可以活跃聊天的氛围,提升彼此之间沟通的快乐。那么大家知道自制微信表情包的方法有哪些吗?接下来手把…

如何用手机制作gif表情包图片?简单几步生成GIF动态图

表情包在我们日常社交里是必不可少的,想用图片制成GIF又不会该怎么办呢?在这里推荐一款手机也可以操作的GIF合成工具,在线一键生成GIF让你当一把表情包king,大家一起来看看GIF在线制作的流程吧。     【GIF合成】选择上传的图片(超出尺寸…

gif动态表情包怎么制作?

gif动态表情包制作方法是呢?有哪些好的gif动画制作软件简单方便呢?下面gif中文网给大家介绍一下gif图怎么制作吧。   入口:一键合成高清gif动图-在线gif制作工具-gif.cn_GIF中文网https://www.gif.cn/   首先,点击【gif合成】…

你们制作微信表情包都用了哪些软件?当然必备这3款

你们制作微信表情包都用了哪些软件?推荐哪些软件?王境泽以“真香定律”火爆整个表情包界,不仅仅如此,表情包在我们日常聊天中使用也较为广泛,表情包不仅可以活跃聊天的氛围,还可以缓解尴尬,很多人使用的可能都是电脑…

怎么用视频做gif动图?手把手教你制作gif表情包

想必大家都看到过用电影或电视剧里的名场面制作的gif动图吧,是不是觉得非常有意思呢?当我们也想尝试用视频来制作gif动图的时候,应该怎么办呢?下面,我为大家推荐一个gif制作网站(https://www.yasuotu.com/z…

如何制作微信gif表情包?一个方法教你在线制作gif表情

现在微信聊天软件上会有各种各样的gif表情包,丰富生动,很有意思。那么,我们自己要怎么制作gif表情包呢?很简单,使用【GIF中文网】的gif制作(https://www.gif.cn/)功能,上传两张及以上…

怎么做表情包微信gif?表情包制作软件分享!​

怎么做表情包微信gif?表情包是指一组或多组有意义的表情符号的集合,这些符号通常用于电子通信中的文字消息中,例如在社交媒体、聊天应用程序和电子邮件中。表情包可以包含各种各样的图像,从简单的笑脸到各种各样的动物、表情和场景…

2019最强就业指南,看了达摩院十大科技趋势,再也不怕互联网寒冬

https://www.toutiao.com/a1621518118218776 【2019最强就业指南,看了达摩院十大科技趋势,再也不怕互联网寒冬】 达摩院刚发了份2019十大科技趋势,简直就是十大新职业指南,建议结合前段时间公布的因科技发展而诞生的十大新职业以及…