升C / ASP.. NET:面向对象的良好实践问题
本文关键字:问题 面向对象的 ASP NET | 更新日期: 2023-09-27 18:06:22
我目前正在为我正在构建的web应用程序进行类设计。我对OOP比较陌生(尽管我做过一些)。在大多数情况下,我相当自信地知道我在范式中做了什么:我知道一个类访问另一个类的内部工作不是一个好的实践,不安全的静态方法是不安全的,因为它们可以修改全局状态,一般来说,我可以保持我的代码越纯功能性和模块化,我就会越好。
我有点不确定在这种情况下该怎么做。我有多个网页都有自己的GridView控件。一些逻辑将遍历每一行,并根据某些条件改变行颜色。例如,保持一个静态类封装这些样式更改,每个页面都将访问它,这会被认为是不好的实践吗?从技术上讲,这意味着这个类将修改另一个类的成员。我该怎么做呢?我不希望每个类都重复我的代码,因为我尽可能地坚持DRY原则。
编辑:这是我的想法。public static class RowStyle
{
public static void SetRed(GridViewRow row)
{
row.BackColor = Color.Red;
}
// More methods here
}
每个页面将传递多个gridviewws给这个类,然后对它们进行修改
一般来说,如果静态方法不修改静态状态,那么它们就不是什么大问题。因此,只要它所需要的一切都被封装在方法中,或者通过参数传递,那么就不会有什么问题。
例如,按照你的例子,在我看来,以下是可以的
public static class Colorizer
{
public static void Colorize(GridView gv)
{
// do you're funky logic here.
}
}
并在需要逻辑的每个页面中使用该方法。
然而,这将是坏的坏的:
public static class Colorizer
{
private static bool haveIAlreadyColorized = false;
public static void Colorize(GridView gv)
{
if(!haveIAlreadyColorized)
// do you're funky logic here.
}
}
我建议创建一个包含GridView的自定义UserControl,并在那里添加所有相关逻辑。这是在ASP中执行此操作的最佳方法。网络平台。
如果您将遵循相同的颜色代码,则可以遵循以下代码:
-
创建一个公共类。
-
创建一个方法,它将在rowdatabound事件中被调用,基于事件你可以改变颜色
我认为这将是很好的有一个静态类的方法像这样:
public static System.Drawing.Color GetRowColor(GridRow row)
...
如果控制颜色值的规则是全局的,那么这是合适的
我会将样式更改封装在一个地方(web。config将是我的选择),并创建一个以GridView实例作为参数的助手方法。该助手方法的唯一目的是从配置文件中读取样式信息,并将其应用于传递的GridView实例。
任何包含GridView的页面都将调用helper方法