gpt4 book ai didi

c# - 生成器设计模式 : Accessing/Passing model data to/in Concrete classes

转载 作者:太空狗 更新时间:2023-10-29 21:53:34 28 4
gpt4 key购买 nike

这是我的构建器界面:

public interface IContainerBuilder {
void SetSections();
void SetSides();
void SetArea();
WebControl GetContainer();
}

这是我的 ConcreteBuilder:

public class SingleContainerBuilder:BaseProperties, IContainerBuilder {
Panel panel = new Panel();
public void SetSections() {
//panel.Height = value coming from model
//panel.Width = value coming from model
}
public void SetSides() {
//panel.someproperty = //value coming from model,
//panel.someotherproperty = //value coming from model,
}
public void SetArea() {
throw new NotImplementedException();
}
public System.Web.UI.WebControls.WebControl GetContainer() {
return panel;
}
}

导演在这里:

public class ContainerBuilder {
private readonly IContainerBuilder objBuilder;
public Builder(IContainerBuilder conBuilder) {
objBuilder = conBuilder;
}
public void BuildContainer() {
objBuilder.SetArea();
objBuilder.SetSections();
objBuilder.SetSides();
}
public WebControl GetContainer() {
return this.objBuilder.GetContainer();
}
}

这就是我从默认页面调用它的方式:

var conBuilder = new ContainerBuilder(new SingleContainerBuilder());
conBuilder.BuildContainer();
var container = conBuilder.GetContainer();

现在我遇到的问题/困惑是如何将模型数据传递给具体类?我感到困惑/卡住的原因是可能有许多不同的容器(可能超过 20-30 个)。是否每种不同类型的容器都必须去从模型中获取数据,或者是否有更好的方法?

我感到困惑的第二件事是,我的模型在不同的库中。我是否需要在我的 Web 项目中创建模型的副本并从该主模型填充我的本地模型,或者我应该直接查询主模型以获取具体类属性?如您所见,我的 SingleContainer 包含 BaseProperties,它们是主模型中已有属性的本地声明。我看不到或不理解本地模型的意义,我不确定我是否在这里。

抱歉,我是设计模式的新手。

任何帮助将不胜感激,

谢谢

最佳答案

我创建了一个在构建器初始化之前调用的库,我将我需要的容器的“ key ”发送到库静态方法,库根据“ key ”返回我需要的数据,然后我将该对象传递给构建器并在那里做一些事情。早些时候我不得不传递多个对象来构建需要构建的东西,但现在不是将多个“数据对象”传递给具体类并使具体类依赖于其他类,具体类只需要一个包含所有信息的“数据对象”我需要。

所以我的电话现在看起来像这样

var data = ContainerData.Getdata(key);//Call to library 

然后最后调用builder是

var conBuilder = new ContainerBuilder(new SingleContainerBuilder(data));

当然,具体类的构造函数已更改为接受“数据”类型

关于c# - 生成器设计模式 : Accessing/Passing model data to/in Concrete classes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32159330/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com