关于OOP中的方法
我是OOP方面的新手 我了解课程、方法等,但我在哲学方面遇到了麻烦 现在,我正在做一个项目来管理项目,包括项目管理、类、方法、变量、用户、组、日志和任务管理 因此,从关于OOP中的方法,oop,class,methods,Oop,Class,Methods,我是OOP方面的新手 我了解课程、方法等,但我在哲学方面遇到了麻烦 现在,我正在做一个项目来管理项目,包括项目管理、类、方法、变量、用户、组、日志和任务管理 因此,从项目课程开始,我有: public function create_project() public function get_projects() public function delete_project() 然后,ProjectClassclass: public class create_class() public c
项目
课程开始,我有:
public function create_project()
public function get_projects()
public function delete_project()
然后,ProjectClass
class:
public class create_class()
public class get_classes()
public class delete_class()
但是,我认为这不是正确的方法,所以我改为:
项目
课程方法:
set_name、get_name(以及类似的方法)
添加类
上课
添加日志
获取日志
ProjectClass
class方法:
设置项目id(并获取)
添加_变量(并获取)
加法
因此,在第一种情况下,是创建新项目的Project
类,创建类的ProjectClass
类和创建方法的Method
类,在第二种情况下,是创建和管理其类的Project
类,是创建和管理其方法的ProjectClass
类
那么,这些“风格”是正确的吗
如果第二种情况是正确的,谁创建了项目?本身
非常感谢您在一般情况下,如果您没有明确的责任分配(我指的是从getter和setter之外的行为),那么很难判断一个设计是否优于另一个设计。随着时间的推移,我从前期设计转向迭代/增量设计,一次解决一个问题,并根据需要重构设计。在本例中,我将尝试制定系统的基本需求,并为每个需求启动设计实现周期,在处理新需求时重新构建模型
只是一个例子来考虑这个问题:有一个没有被项目约束的类是有意义的吗?如果答案是否,那么最好使用
Project>>createClass(aClassName)
这样的方法,因为您明确声明类是在项目上下文中创建的。您还可以在类和方法实现中所属的项目之间建立适当的连接。但是,在ProjectClass
类中定义一个以项目为参数的构造函数也是一种有效的方法。这样你就可以说“如果你想创建一个新的类,那么你必须提供它所属的项目”。使用哪种方法取决于许多因素,其中一个因素是程序员的品味:),因此,如果没有特定的上下文来评估它们,就很难说明一种方法是否优于另一种方法
最后,如果有帮助,有几件事值得一提:
- 假设
是一个实例方法,为什么公共函数create_project()
项目的实例知道如何创建其他项目?一开始,这没有多大意义,因为这基本上是一种班级责任,除非你对此有特定的动机(例如,喜欢这种模式)
- 为什么项目回答
?他们有什么关系吗?或者只是列出所有的项目?再说一遍,这听起来像是班级的责任获取项目()
- 我通常不喜欢添加消息接收者作为消息的一部分表示的概念。因此,我不会调用消息
,因为它对于声明delete\u project()
(您已经知道消息的接收者是一个项目)是多余的$project->delete\u project()
- 你应该和你的类名保持一致。如果您使用
来表示类,那么您应该使用ProjectClass
来表示方法(虽然我个人不喜欢这些名称,但我认为它们有误导性)。选择专有名称并在域模型中保持它们的一致性是非常重要的ProjectMethod