- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我们基于 MVC 框架构建的电子商务系统(Web)中,团队就产品 View 实现展开了争论。有 100 多个产品类别(照片/视频、计算机、厨房电器等),每个类别都有其特点,如产品详细信息表格、折扣和信用计算器等。每个产品 View 页面略有不同在每个类别中。这种差异虽然很小但很重要,但必须以某种方式加以实现。
1) 解决方案之一是拥有一个适合每个类别的“Uber Product View”页面。但是,为了正确显示和隐藏此 View 的元素,我们需要一些 xml/json 来存储配置。
2) 另一个建议的解决方案是每个类别有一个 View 。
我在 1 解决方案中还看到了一个 CON。我们拥有 丰富 的 HTML/CSS/Javascript 语言来实现任何用户界面,包括复杂的表单和验证、向导和其他产品功能。在使用配置和解析器时,我们使用的是json/xml配置的可怜语言。例如,很难对表单元素之间的依赖关系进行编程。
问题:有没有更好的办法?什么是“ View 继承”的行之有效的方法?谢谢。
最佳答案
我会尝试提供“另一种”方法,不一定是“更好”(我不相信绝对的“更好”或“更差”——对我来说,设计只有在执行时才会好,这取决于关于实现者)。
据我了解,您提出了两个方案。第一种是整体设计,它试图涵盖广泛的职责,但过滤掉不需要的功能。它具有集中特性,允许您将更改/改进应用到中央实体。
另一种是由大量定制实体组成的设计,每个实体彼此之间几乎没有共同点,并且初始设计更简单(但需要影响多个产品的 future 改进将是一场噩梦)。
所以这是另一种方法。它从实体组件系统中汲取了一些想法,这些想法在商业世界中很少见,但在游戏引擎中却极为常见(更接近我的工作范围)。
这个想法首先放弃了继承层次结构的经典概念,转而支持组合(仅针对这种情况:继承仍然非常有用)。
您的产品 View 实体变成一个空白容器,最初什么都不输出。您添加(而不是继承)影响 View 的 View 组件。
然后中央“系统”获取此产品 View 实体并对其进行处理,检查可用组件并根据可用组件执行适当的功能。在这种情况下,系统往往是最单一的。实体和组件、实体和系统之间没有耦合。实体是完全独立的。组件也是完全独立的。系统与组件之间可能存在紧耦合,而系统与实体之间可能存在松耦合。
该系统的优势在于它的灵 active ,它可以轻松处理来自少数几个集中式组件的潜在无限组合可能性。新实体可以从现有组件串起来,除了添加适当的组件和新实体之外,无需其他代码。产品 View 之间的细微差别可以通过每个产品 View 实体所具有的 View 组件的细微差别来解释。
优点:
缺点:
不幸的是,我不太熟悉您的团队使用的工具的精确组合,以了解如何有效地将此类设计映射到他们。
但这可能是要添加到讨论中的内容——“另一种”方法(很难说“更好”)。
关于architecture - 通用 View 与多个专业 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33829814/
如果您设计分布式应用程序以实现轻松扩展,或者您只想使用 Amazon、Google 或 Microsoft 提供的任何新的“云计算”产品,那么您通常最终会使用一些典型的概念或组件: 分布式 blob
根据uncle Bob's Clean Architecture 、企业和应用程序业务规则(概念上由命令组成)位于外部接口(interface)层之下的层中。因此,无论何时调用接口(interface
我在网上找不到它的任何实现实际上为您提供了一种与框架无关且实用的实现方式。 我已经看到了几个解决它的低于标准的建议: 使存储库方法成为原子 使用例原子化 它们都不是理想的。 案例#1 :大多数用例依赖
我正在查看 Sparkle 项目的配置并注意到它们设置: 架构 = ppc i386 x86_64 有效架构 = i386 x86_64 来自苹果的有效架构描述: Space-separated li
只听本周的podcast并认为将您的一些经验组合在一起会很好,在这些经验中,您已经看到设计的“架构”方面比应有的支配更多东西。 Java 在这方面经常受到负面报道,而且随着 Java EE 的复杂性增
我正在阅读 Bob Martin (https://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html) 的清洁架构
OSGi是模块化架构,JavaBeans是组件架构。有什么区别? 最佳答案 OSGi 和 Java Beans 之间的主要区别在于类加载器的工作方式。在标准 .jar 文件或 EJB 中,rt.jar
我对 Clean Architecture 中的 Gateway to Entity 依赖有疑问。我认为以下同心圆图形经常被介绍为整洁的架构。 在上图中,Gateway并没有直视Entity。但是,还
我试图理解 TOGAF 9 的核心概念。 无论我多长时间阅读 TOGAF 手册中的解释,我都无法理解 Enterprise Continuum 和 Architecture Repository 之间
如果 Kappa 架构直接对流进行分析,而不是将数据拆分为两个流,那么在像 Kafka 这样的消息系统中,数据存储在哪里?或者它可以在数据库中进行重新计算? 单独的批处理层是否比使用流处理引擎重新计算
它们的含义是什么,我可以将它们设置为不同的值吗? 最佳答案 架构是您想要构建的架构,有效的架构是您可以设想使用您的代码库构建的架构。 所以也许您只想为 armv7 构建二进制文件,但相同的源代码可以为
我现在正在尝试在 Xcode 4.0 中构建的项目遇到问题,希望有人可以为我解释一下。 我正在尝试使用 ZBar SDK 并遵循此处概述的指南中概述的说明: http://zbar.sourcefor
在基于 Apple Silicon 的机器上使用 Interface builder 时,我当前的项目会引发 IBDesignable 错误。 我尝试排除用于调试的 arm64 架构,以及我在互联网上
Xcode 项目中出现警告: crypto was rejected as an implicit dependency for 'libcrypto.a' because its architect
我正在 Xcode 5 中开始新项目。我想使用 iOS SDK 7 开发应用程序,但部署目标为 iOS 5.0。当我在 Xcode 中创建新项目并尝试将部署目标更改为 5.0 时,我收到了这条消息:
编辑 :这个问题可能是旧的,它与 xcode 3 有关。 我正在开发一个需要 voip 支持的 iPhone 应用程序,所以我添加了 pjsip 的 ARM 版本图书馆。但如果我使用 iPhone 模
我们最近将最低 iOS 支持设置为 4.0,并开始使用 LLVM 编译器对当前可用的应用程序进行新更新。 将“架构”和“有效架构”设置为仅 armv7 是否会排除 iPhone 3G 等 armv6
我想在我的 64 位机器上启用额外的架构(32 位)。我做了 dpkg --print-architecture 来了解已知的架构,即 amd64 。之后我做了 dpkg --print--forei
操作系统:OS X Yosemite 版本 10.10.1 XCode:未安装 应用程序加载器3.0 (620) PhoneGap:3.7.0 PhoneGap 构建:在线 (build.phoneg
我们已经构建了一个具有多个 native 绑定(bind)的 Xamarin 应用程序(iOS、Android)。该应用程序在设备和模拟器上运行良好,我们能够毫无问题地构建存档(显然)。 问题是当我们
我是一名优秀的程序员,十分优秀!