我可以称其为复合模式的实现吗
我有自己自称为复合模式的设计,尽管我不完全确定。因此,我正在为您提供有关此的声明。
这是一个界面,共同描述了所有这些界面,
public interface DomainResourceBuilder<T extends DomainResource> {
T buildInsertion(T persistence, EntityManager entityManager) throws Exception;
T buildUpdate(T model, T persistence, EntityManager entityManger);
<E extends T> DomainResourceBuilder<E> and(DomainResourceBuilder<E> next);
}
该界面描述了 domainResourceBuilder
作为配对
public abstract class AbstractDomainResourceBuilder<D extends
DomainResource> implements DomainResourceBuilder<D> {
@Override
public <E extends D> DomainResourceBuilder<E>
and(DomainResourceBuilder<E> next) {
return new CompositeDomainResourceBuilder<>(this, next);
}
private class CompositeDomainResourceBuilder<T extends D>
extends AbstractDomainResourceBuilder<T> {
private final DomainResourceBuilder<D> parentBuilder;
private final DomainResourceBuilder<T> childBuilder;
public
CompositeDomainResourceBuilder(DomainResourceBuilder<D>
parentBuilder,
DomainResourceBuilder<T> childBuilder) {
super();
this.parentBuilder = parentBuilder;
this.childBuilder = childBuilder;
}
@SuppressWarnings("unchecked")
@Override
public T buildInsertion(T model, EntityManager
entityManager) throws Exception {
return childBuilder.buildInsertion((T)
parentBuilder.buildInsertion(model, entityManager),
entityManager);
}
@SuppressWarnings("unchecked")
@Override
public T buildUpdate(T model, T persistence,
EntityManager entityManger) {
return childBuilder.buildUpdate(model, (T)
parentBuilder.buildUpdate(model, persistence,
entityManger), entityManger);
}
}
}
具体类扮演 leaf> leaf
角色
public class CustomerBuilder extends AbstractDomainResourceBuilder<Customer> {
@Override
public
Customer buildInsertion(Customer persistence, EntityManager entityManager) throws Exception {
return persistence;
}
@Override
public
Customer buildUpdate(Customer model, Customer persistence, EntityManager entityManger) {
return persistence;
}
}
我可以称其为复合模式吗?
这就是我的使用方式。屁股我有以下层次结构。
AbstractEntity
|___User
|___Customer
现在,我想在每个类上实现不同的逻辑,因此,使用设计,我将为这些班级创建特定的逻辑,然后最终将它们组成一个,这仍然是其中之一。这样的东西。
// group of objects
DomainResourceBuilder<AbstractEntity> abstractEntityBuilder = new AbstractEntityBuilder<>();
DomainResourceBuilder<User> userBuilder = new UserBuilder<>();
DomainResourceBuilder<Customer> customerBuilder = new CustomerBuilder<>();
// treat them as a whole (unify them all)
DomainResourceBuilder<Customer> compositeCustomerBuilder =
abstractEntityBuilder
.and(userBuilder)
.and(customerBuilder);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我认为它看起来不像
复合
模式为:在我看来,看起来它使用 builder> builder 与可以处理实体结构的通用物质。
更新:
在我的视图中,它不是对象组:
如果将上述对象放入集合中,则可以将其称为一组对象。以我的荣誉意见,这只是对象变量。
在以下几行中, fluent interface 可以将设计模式视为可以被视为可以链接的:
让我展示一个示例,其中可以将对象组作为一个整体对待。
以下文献有很好的例子和解释:
想象您正在构建浏览器您想显示控件。您的任务是显示在DOM浏览器中放置的所有控件的值。
因此,示例代码看起来像这样。
我们需要一些用于控件的基类:
及其操作:
然后,我们创建一个复合控件,可以在其中拥有对象组:
我们的UI控件:
然后我们可以这样调用代码:
I do not think that it looks like
Composite
pattern as:In my view, it looks like it uses Builder pattern with generics that can treat hierarchy of entities.
UPDATE:
In my view it is not group of objects:
If the above objects will be put in collection, then it can be called as group of objects. In my honour opinion, it is just object variables.
In the following lines of code, Fluent interface design pattern can be seen as methods can be chained:
Let me show an example where group of objects can be treat as a whole.
The following literature has great examples and explanations:
Imagine you are building browser and you want to show controls. Your task is to show values of all of your controls placed in DOM browser.
So example code would look like this.
We need some base class for controls:
and its operations:
Then we create a composite control where we can have group of objects:
And our UI controls:
And then we can call code like this: