设计模式-工厂模式的应用
发布日期: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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:设计模式-抽象工厂模式的应用
下一篇:网络安全-练习RSA算法

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月19日 05时24分44秒