java动态定义泛型_关于oop:具有动态性质且可完全自定义的Java泛型编程

我正在从事工程数据演示和管理项目。

我们的项目的性质应该是可定制的,因为我们可能有一些相似的实体,几乎没有多少属性。 例如,与产品B相比,产品A具有2个其他属性,例如productSize和productionDate,并且可能有100种不同的产品。 不同的项目或客户可以使用任何产品,也可以定义新产品。

是否有任何设计模式可用于将所有内容视为通用类型或动态对象,以便我们没有所有实际类型的特定实体,而只有诸如Type,BaseType,Property,Feature之类的东西。 我已经看到了诸如动态对象模型之类的一些模式,这些模式旨在解决相同的问题,但是我不确定它们是否确实在现实世界中的项目中起作用。

我们的技术是Java和Spring,以创建we应用程序和3层架构。

您的经理在技术上是否熟练?您可能应该问他们。

您的意思是,将有一个名为" Person"的类型链接到两个与名为" String"的类型链接的属性(分别名为" firstname"和" lastname")的" Person"类型,而不是一个具有" String"字段的Person类。 ?

与其问我们,不如回去找老板澄清一下可能更有意义。

从未听说过inheritance吗?

这听起来像是IMO的一个坏设计想法。

您还没有听说过通用数据库设计吗?他们试图使设计尽可能简单,以便在您想要在系统中添加新功能时不需要添加更多数据库表或实体。现在,我需要专业的意见或指导。特别是关于应用程序层。当然他不是程序员,但他听过一些话,他是我的老板!你懂 :(

也许您可以将所有对象作为XML存储在数据库中。有多种工具可用于将对象与XML序列化和反序列化。或者,您可以使用JSON。

@ j.con是什么意思?

我不同意那些将其定为"过于广泛"的投票。这是一个有关设计模式(或反模式)的问题,@ Kayaman提供了一个很好的答案。我可能看到一个论点,也许它应该属于程序员而不是这里。

也许我在这里没有大图,但是如果他不想使用20-30个不同的类,而想要5或6个泛型类,那就是abstract类与Class< T >一起起作用的地方。阅读Generic Types docs.oracle.com/javase/tutorial/java/generics/types.html

@SotiriosDelimanolis,不,他不是软件工程师,但他是一名优秀的工程师,他以这种方式在自己的脑海中对问题进行了建模。实际上看起来不错,但正如Kayaman所说,这是一种反模式,在大多数情况下应避免使用。

这是一个令人惊讶的普遍现象,并且是一个非常糟糕的主意。 听起来您正朝着Inner Platform反模式迈进。

初次听到(或如果您是经理)似乎很不错,但是结果是一个系统试图尝试做所有事情,但最终做不到任何事情。

数据库变得非常低效,并且容易损坏。 我很不幸看到了这个动作。

感谢Kayaman,这就是他认为这种设计类型会有所帮助的原因,我们可以做我们想做的任何事情。但是我如何证明它不起作用?我从未听说过并尝试过类似的方法,但我不想在没有任何理由的情况下拒绝。我对应用程序层的劣势更感兴趣。

@sina首先向他展示该维基百科页面。警告他有关维护和性能以及开发困难的问题。

但是我也发现它是一种设计模式"动态对象模型",这是它的链接。链接

@sina是的,那么您可以向他展示该论文的"缺点"部分。但它是您的选择,也许会适合您,也许您就正确了。也许几年后,您会想到"该死的,Kayaman角色肯定是多么可怕"。无论如何,我建议您即使对这种模式也必须保持谨慎。有优点也有缺点。我只看到了缺点。

@sina那么,它如何结束? :)

我避免使用"动态对象模型"或任何被称为"动态对象模型"的东西,而是基于常规模式实现了整个软件。但是我做到了如此灵活,它的用户可以定义和更改系统属性和类型。例如,我有诸如Property,Value,Type之类的实体……也许接近于共享点的想法

例如,用户没有定义一个称为制造商的实体,而是在系统中创建它(创建新的属性表单),并将之前创建的属性分配给该表单,并为每个属性设置初始值,依此类推。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值