- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
示例:
class Person
{
@OneToMany
List<Action> actionHistory;
@ManyToOne
Employer employer;
private StateEnum myCurrentState = StateEnum.INITIAL_STATE;
}
想象一下这样的情况,其中有两件事是正确的:
Person.myCurrentState 需要根据 actionHistory、雇主等的变化进行更改。有一组业务规则,例如“如果类型 X 的操作出现在操作流中并且当前状态为 Y,则设置新的状态为 Z”
人员需要能够根据其当前状态阻止和允许对子级的某些操作。例如,在某些情况下可能无法更新雇主的职位,或者可能无法添加满足特定条件的操作。
最初,我以为我会尝试通过包含验证/ react 逻辑的 Person 例程将所有访问权限集中到子级。结果是 Person 对象变得太大而且到处都是,因为它需要监视多少个子对象的操作。 (也就是说,不仅仅是 getAEmployer()、setNewEmployer() 之类的东西,还有 updateJobTitleAtEmployer() 等东西)
不过,将逻辑传播给 children 似乎同样困惑。在这种情况下,雇主(例如)必须包含大量对其父级的引用。而且与这些东西相关的业务规则也分散在各处。
这个问题有什么干净的通用解决方案吗?我想要一些通用的方法,让我可以拥有一个父级 vert ,并在某些情况下对其许多子级的某些状态变化使用react。
更新:我认为我在这个问题中错误地使用了“ parent ”和“ child ”这两个术语。我这样使用它们:父级“有一个”子级/父级“由子级组成”。在示例中,Person 是父类,属性类是子类。
更好的例子:
class Employee
{
private Contract contract;
private List<Action> actions;
private EmployeeState currentState = EmployeeState.INITIAL;
}
想象一下,在这种情况下,如果合约中的某些内容发生变化(例如,如果利率上升),则 currentState 可能会发生变化。如果员工处于某些州,也可能无法在契约(Contract)中设置某些内容。在 currentState 发生变化的情况下,Contract 属性只是更大计算中的一个因素(即状态可能由诸如“如果 Contract.hourlyRate > 30 并且操作包含具有这些属性的操作而不是状态...”之类的规则确定。
此外,在这种情况下,添加操作可能会更改 Employee 的状态,或者根据当前状态被阻止。
如果我遇到这些问题,我的模型是否可能有问题?
最佳答案
据我了解,您可以使用Observer pattern对于这种情况。在这种情况下,Contract 会订阅 Employer,这样当 Employer 的状态发生变化时,Contract 就会收到通知,并根据当前状态做自己的事情。
关于java - 当子对象状态影响父状态时处理它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5706137/
我有一个包含在父 ScrollView (不是直接 subview )中的子 ScrollView 。我想要的是,一旦子 ScrollView 到达其内容的末尾,父 ScrollView 就开始沿相同
我有一个典型的 MVVM 场景: 我有一个绑定(bind)到 StepsViewModels 列表的 ListBox。 我定义了一个 DataTemplate,以便将 StepViewModels 呈
我的 firebase 数据库的结构如下图所示 image of my firebase DB stucture 每当有新消息时,它都会添加到特定的 ID 下,如图所示,它是“59a004ce9bfe
基本上,我的目标是尝试为整个 Web 项目创建一个键盘 Controller ,并且我希望能够保留在父文档上创建的键绑定(bind),并让子 iframe 继承它们。这可能吗? 这是我现在拥有的示例设
我正在开发一个 asp.net 网络应用程序。 有一个母版页的子窗体。母版页没有定义任何高度,但它为 子窗体 定义了一个 X px 高度。 在子表单上它有一个 fieldset 容器,在这 2 个 t
我有一个包含 PictureBox 和 Label 的 UserControl。控件在不同的事件(例如 onMouseEnter、OnMouseLeave)时在 PictureBox 中加载三个不同的
我有一个 viewpager,在其中一个 fragment 中,我有两个单独的 fragment ,分别包含一个垂直和一个水平的 recyclerview。 当我将水平 recyclerview 滚动
我正在尝试抽象一个我在应用程序中经常使用的模式,我可以在另一个屏幕中使用它,该屏幕应该发送来自另一个屏幕内的 TextInput 组件的 Prop 。问题是,当我将 TextInput 组件留空时,它
嵌套滚动? 我在 PageView 中有三个垂直页面我希望能够在两者之间切换。 页面由可滚动的 ListView 组成s。 当页面处于焦点时,显示的列表应该是垂直可滚动的,但是当列表滚动到任一端时,我
这个问题的 jsFiddle 可以在这里找到:http://jsfiddle.net/Hsw9F/1/ JavaScript(console.log 调试信息可在 jsFiddle 中找到) var
HTML: Software Update 2010
我正在制作一个响应式网站。我有 3 个 div (.block),我需要将它们水平放置在一起。 当屏幕足够宽时,这很容易实现。但是,当我使浏览器更窄时,第三个 div (3) 换行到下一行,但我想要的
资源和背景 https://jsfiddle.net/wwx100f8/69/ 我正在尝试创建一个可扩展/可折叠的 Accordion 来容纳餐厅的食物选项,这是一个类似于 Just-Eat 或 Hu
我有一个嵌套的 ViewPager,效果非常好。唯一的问题是,一旦子 ViewPager 位于最后一项并且我进一步滚动,父 ViewPager 就会滚动。我不想要这种行为。 我如何实现这一目标? 这是
例如,我有主要 Activity 。我打电话的地方: Intent callchild = new Intent(this, childActivity.class); startActivity(c
我有一个定义 FormGroup 的 Angular 组件,它有一个嵌套的 FormGroup 作为它的控件之一。 子 FormGroup 作为 @Input 参数传递给子 component,并且在
这个问题与another question I asked有关 基本上,我有 2 个水平对齐的 div。两者都位于名为“.Parent”的 div 中,因此结构如下: s
基本上我需要 div.content 具有 15px 的默认填充,除非 div 具有子 div.products-list。如果 .products-list 的子 div 存在,我需要 div.co
代码笔:http://codepen.io/anon/pen/qaVRqw 我试图让 innerDiv 在文本超出父 div 之前换行文本。让所有文本都显示在 innerDiv 中但又被换行的最佳方式
我有一个名为 main 的父 div。它有一堆子 div,我向左或向右浮动。 当我完成最后一个 float 时,主 div 的高度完全消失,打乱了我的页面布局。我给了它一个高度:100%;只是现在,但
我是一名优秀的程序员,十分优秀!