提问人:Thomas 提问时间:6/20/2020 最后编辑:Thomas 更新时间:6/21/2020 访问量:264
我是否应该始终创建同时具有属性和方法的类?
Should I always create classes that have both attributes and methods?
答:
0赞
Rajan
6/20/2020
#1
类不必包含方法和属性。假设一个 secenerio,其中某些属性是公开定义的,以便同时使用,因此我们可以在类之外的任何位置使用此变量。但是要使用封装,建议属性是私有的。
0赞
Bemn
6/20/2020
#2
如果你的意思是总是,我的回答是否定的,你不应该总是这样做。
如果语言允许你这样做,那一定是有原因的。请考虑以下工厂类:
public class Factory : IFactory { public const string FactoryName = "StackOverflowFactory"; public IPerson GetPerson(PersonType type) { switch (type) { case PersonType.Rural: return new Villager(); case PersonType.Urban: return new CityPerson(); default: throw new NotSupportedException(string.Format("{0} does not handle {1}", FactoryName, type)); } } }
在本例中,类包含一个属性和一个方法。这很正常。
另一方面,当我们谈论被动数据结构之类的东西时,为实现这种目的而创建的对象和类,那么你不应该将属性与方法混合在一起,因为这些对象的目的是存储数据,而不是操作数据。
好坏总是相对的,基于系统的设计方式、类的目的等。如果系统是使用模式 A 设计的,但在更改代码时违反了该模式,那么这可能是一种不好的做法。如果该类仅用于存储数据,但您添加了一些方法来操作它,那么这也可能是一种不好的做法。
评论
0赞
Thomas
6/20/2020
你能举一个被动数据结构的具体例子吗?
0赞
Thomas
6/20/2020
还有一个有方法但没有属性的类的例子?
0赞
Bemn
6/20/2020
@Thomas,通常 .NET MVC 中的绑定模型是一个普通对象,没有任何方法。
0赞
Bemn
6/20/2020
@Thomas想象一下,你想要一个类,其中包含一个返回列表中最大数字的方法(是的,就像 Math.max 一样)。在这种情况下,您的类将只有一个(静态)方法,而没有属性。
评论