设计模式-工厂模式的应用
发布日期:2021-06-30 17:44:38
浏览次数:2
分类:技术文章
本文共 1946 字,大约阅读时间需要 6 分钟。
工厂模式的应用
有一个OEM制造商代理做HP笔记本电脑(Laptop),后来该制造商得到了更多的品牌笔记本电脑的订单Acer,Lenovo,Dell,该OEM商发现,如果一次同时做很多个牌子的本本,有些不利于管理。利用工厂模式改善设计,用JAVA语言实现该OEM制造商的工厂模式。绘制该模式的UML图。
【模式UML图】
【模式代码(JAVA语言实现)】 :package sy_1.factory;public interface Computer { public void ComputerType();}
:
package sy_1.factory;public interface ComputerFactory { public Computer getComputerType();}
:
package sy_1.factory;public class Dell implements Computer { @Override public void ComputerType() { System.out.println("Dell"); }}
:
package sy_1.factory;public class Acer implements Computer { @Override public void ComputerType() { System.out.println("Acer"); }}
:
package sy_1.factory;public class Lenovo implements Computer { @Override public void ComputerType() { System.out.println("Lenovo"); }}
:
package sy_1.factory;public class DellFactory implements ComputerFactory { @Override public Computer getComputerType() { return new Dell(); }}
:
package sy_1.factory;public class AcerFactory implements ComputerFactory { @Override public Computer getComputerType() { return new Acer(); }}
:
package sy_1.factory;public class LenovoFactory implements ComputerFactory { @Override public Computer getComputerType() { return new Lenovo(); }}
//OEM_factoryMain .java:
package sy_1.factory;public class OEM_factoryMain { public static void main(String[] args) { System.out.println("OEM生产电脑:"); Computer computer; computer = new DellFactory().getComputerType(); computer.ComputerType(); computer = new AcerFactory().getComputerType(); computer.ComputerType(); computer = new LenovoFactory().getComputerType(); computer.ComputerType(); }}
【运行截图】
工厂方法模式的适用性如下:
- 当一个类不知道它所需要的对象的类时,在工厂方法模式中,客户端不需要知道具体产品类的类名,只需要知道所对应的工厂即可;
- 当一个类希望通过其子类来指定创建对象时,在工厂方法模式中,对于抽象工厂类只需要提供一个创建产品的接口,而由其子类来确定具体要创建的对象,利用面向对象的多态性和里氏代换原则,在程序运行时,子类对象将覆盖父类对象,从而使得系统更容易扩展。
- 将创建对象的任务委托给多个工厂子类中的某一个,客户端在使用时可以无须关心是哪一个工厂子类创建产品子类,需要时再动态指定,可将具体工厂类的类名存储在配置文件或数据库中。
转载地址:https://lexiaoyuan.blog.csdn.net/article/details/89073775 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月19日 05时24分44秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
2021最新 上海互联网公司排名
2019-04-30
字节vs快手!取消大小周之战
2019-04-30
送一个闲置显示器!
2019-04-30
Oracle 行转列 pivot函数基本用法
2019-04-30
Oracle字符串分隔符替换(替换奇数个或偶数个)
2019-04-30
Oracle 利用 UTL_SMTP 包发送邮件
2019-04-30
Oracle 自定义函数实现split功能,支持超长字符串和clob类型的分隔
2019-04-30
Oracle 的循环中的异常捕捉和处理
2019-04-30
Oracle通过pivot和unpivot配合实现行列转换
2019-04-30
给Oracle数据库换一个1522端口的监听
2019-04-30
Excel表格数据生成ECharts图表
2019-04-30
阿里云短信服务python版,pyinstaller打包运行时缺少文件
2019-04-30
Oracle的pfile和spfile的一点理解和笔记
2019-04-30
WebService的简单案例记录(Java)
2019-04-30
Html利用PHP与MySQL交互
2019-04-30
dos简单命令
2019-04-30
mysql的安装与卸载与Navicat远程连接
2019-04-30
java实现稀疏数组及将稀疏数组存入硬盘中
2019-04-30
2021-05-18
2019-04-30