我在网络开发商店工作,所以很自然地我们处理用户配置文件.在处理我们的某个网站时,我注意到没有"用户"类,这让我觉得奇怪,因为我们肯定有用户.相反,该站点依赖于与DataRows(这是C#)的交互,通过静态方法返回,几乎没有实例化.我问我的老板关于为用户创建一个类,他的回答是,因为对象必须重建太多,所以通常不值得.
我对Web开发比较陌生,每次重建页面时都必须实例化对象似乎有点浪费,但另一方面我总是发现面向对象的编程很有用.所以我很想知道一些意见,你们在网页开发中使用OOP多少钱?
在尝试实现存储库模式时,我遇到了一个小问题,我担心其实会掩盖更大的问题.
我有一个DatabaseEntity <T>,我用它来处理所有基本的CRUD操作,并且需要存储在数据库中的所有其他类都将从中运行.它适用于直接从它继承的类,但是当它与具有中间父类的类一起使用时,我遇到了问题.
假设我有三个其他类,Parent,ChildA和ChildB,并且继承看起来像:
DatabaseEntity
|
家长
| |
ChildA ChildB
还假设DatabaseEntity <T>具有带以下签名的方法:
public static T FindBy(int id)
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是当我尝试这样的事情时:
ChildA Foo = ChildA.FindBy(SomeID);
Run Code Online (Sandbox Code Playgroud)
我收到编译器错误,告诉我没有从Parent到ChildA的隐式转换.这是因为Parent是将ChildA和ChildB的类型参数传递给DatabaseEntity的类.我认为简单的修复,只需向Parent添加一个类型参数,从而通过适当的类型.只需等待一秒钟,然后我必须在使用Parent时明确定义子类型,这会破坏任何多态性.不,第二个想法也许这不是一个很好的修复.
我认为我可以在类DatabaseEntity本身上删除type参数并让每个方法都需要一个类型参数但是我必须做类似的事情:
ChildA Foo = ChildA.FindBy<ChildA>(SomeID);
Run Code Online (Sandbox Code Playgroud)
虽然编译,但它似乎不太干净,当然需要更多打字.Visual Studio询问我是否错过了一个演员,而它的真实性我可以在我意外输入之前将我的第一个例子只是时间问题:
ChildB Foo = (ChildB) ChildA.FindBy(SomeID)
Run Code Online (Sandbox Code Playgroud)
我对目前为止我想到的任何解决方案都不是特别满意,我希望有人可以指出一个我错过的优雅解决方案.
我正在尝试对ArrayList自定义项进行排序并获得'至少有一个对象必须实现IComparable'.尽管已经IComparable为他们实现了接口.我只是调用默认的Sort()无参数或任何东西.我正在尝试排序的对象的定义如下:
class AssetItem : System.IComparable<AssetItem>
{
public string AssetName { get; set; }
public int AssetID { get; set; }
public int CompareTo(AssetItem item)
{
if (null == item)
{
return 1;
}
else if (this.AssetID < item.AssetID)
{
return -1;
}
else if (this.AssetID == item.AssetID)
{
return this.AssetName.CompareTo(item.AssetName);
}
else
{
return 1;
}
}
Run Code Online (Sandbox Code Playgroud)
这段代码构建得很好.还有一件事需要记住,我怀疑这可能是问题,虽然我不明白,上面的类是一个内部类.如果这就是绊倒我的话,你会怎么去比较一个内部阶级?
特别是在主题php文件中,比如说index.php.在大多数主题的index.php文件中,第一件事就是调用get_header(),这在index.php中肯定没有定义,那么它如何知道该函数呢?
我对php并不是很熟悉,但是从我刚才读到的内容来看,有一个include和require关键字的工作方式与Java中 的导入或者包含在C中的工作方式大致相同,我理解并且有意义.但是,这个特定index.php文件中这些关键字的唯一用法包括一个不包含get_header()定义的文件,它也没有自己的任何包含或要求(尽管它确实调用了更多的函数)没有权利知道,就像索引一样,很清楚现在它是如何知道这个功能的.
无论如何,我只是希望自己从wordpress中删除一些"魔法".提前致谢!