不过,我不相信这种做法的好处.即使它可能是由“伟大的”造成的(我认为是马丁福勒,虽然我不知道).我在这里提供一个简单的例子.假设我有一个Person类,它包含一个Person及其方法(行为)的数据.
class Person{ string name; DateTime BirthDate; //constructor Person(string name,DateTime BirthDate) { this.name = name; this.BirthDate = BirthDate; } int GetAge() { return Today - BirthDate; //for illustration only }}
现在,将行为和数据分离成单独的类.
class Person{ string name; DateTime BirthDate; //constructor Person(string name,DateTime BirthDate) { this.name = name; this.BirthDate = BirthDate; }}class PersonService{ Person personObject; //constructor PersonService(string name,DateTime BirthDate) { this.personObject = new Person(name,BirthDate); } //overloaded constructor PersonService(Person personObject) { this.personObject = personObject; } int GetAge() { return personObject.Today - personObject.BirthDate; //for illustration only }}
这应该是有益的,并提高灵活性并提供松耦合.我看不到怎么样据我所知,这引入了额外的编码和性能损失,每次我们必须初始化两个类对象.我在扩展这个代码时看到更多的问题.考虑在上面介绍继承时会发生什么.我们必须继承这两个类
class Employee: Person{ Double Salary; Employee(string name,DateTime BirthDate,Double Salary): base(name,BirthDate) { this.Salary = Salary; }}class EmployeeService: PersonService{ Employee employeeObject; //constructor EmployeeService(string name,Double Salary) { this.employeeObject = new Employee(name,BirthDate,Salary); } //overloaded constructor EmployeeService(Employee employeeObject) { this.employeeObject = employeeObject; }}
请注意,即使我们在一个单独的类中隔离行为,我们仍然需要使用“类”类的对象来执行Behavior类方法.所以最后我们的Behavior类包含数据和行为,尽管我们有一个模型对象形式的数据.
你可以说可以添加一些接口到混合,所以我们可以有IPersonService和IEmployeeService.但是,我认为为每个类引入接口并从接口继承似乎不行.
那么那么你可以告诉我,在上述情况下,通过分开数据和行为来实现这一点,我不能通过将它们放在同一个类中来实现
以上是内存溢出为你收集整理的c# – 面向对象编程:分离数据和行为全部内容,希望文章能够帮你解决c# – 面向对象编程:分离数据和行为所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)