C# 它是哪种设计模式?Can';我认不出
我有一种情况,我必须特别调用我的方法 秩序。这出现在很多地方,所以我想知道是否有一些模式我看不到 现在,在每种情况下,我都有一个prepare stage,在那里我根据先决条件执行一些代码,一个act stage(在那里我修改我的数据)和save stage(在那里我将数据保存到数据库)。 我现在有这个:C# 它是哪种设计模式?Can';我认不出,c#,.net,design-patterns,C#,.net,Design Patterns,我有一种情况,我必须特别调用我的方法 秩序。这出现在很多地方,所以我想知道是否有一些模式我看不到 现在,在每种情况下,我都有一个prepare stage,在那里我根据先决条件执行一些代码,一个act stage(在那里我修改我的数据)和save stage(在那里我将数据保存到数据库)。 我现在有这个: accessRightsService.Shift(document, userRole); updateService.ApplyChanges(document, newData); do
accessRightsService.Shift(document, userRole);
updateService.ApplyChanges(document, newData);
documentRepository.Update(document);
我在考虑类似于myService.WrapOperation(doc,d=>{})
的东西,它将首先调用prepare,然后执行操作,然后将结果保存到数据库中
那么,这是一种模式吗?如果是,是哪种模式?
在我看来,它不像模板方法或装饰器,这与构建器模式非常相似。即使构建器模式声明它用于类实例化,这也可以应用于方法调用
或者你可以提供一个代码示例,不要降低它们的有用性,但是:世界并不是完全由设计模式组成的。@TaW这个示例代码非常糟糕(tm),因为存在一个秘密的时间耦合。仅仅通过检查方法签名根本无法知道它们彼此依赖,并且必须按特定顺序调用它们。这里需要一些重构。您是否只是遇到了可以提取到方法中的重复代码?这看起来类似于模板方法,只是在这里您可以在客户机代码中定义步骤顺序
public class Director
{
public void Construct(Builder builder)
{
builder.BuildPart1();
builder.BuildPart2();
builder.BuildPart3();
}
}
public abstract class Builder
{
public abstract void BuildPart1();
public abstract void BuildPart2();
public abstract void BuildPart3();
public abstract Product GetProduct();
}
public class ConcreteBuilder : Builder
{
private Product _product = new Product();
public override void BuildPart1()
{
_product.Part1 = "Part 1";
}
public override void BuildPart2()
{
_product.Part2 = "Part 2";
}
public override void BuildPart3()
{
_product.Part3 = "Part 3";
}
public override Product GetProduct()
{
return _product;
}
}
public class Product
{
public string Part1 { get; set; }
public string Part2 { get; set; }
public string Part3 { get; set; }
}