我有一个使用两个类--A和B的Web表单.A类包含创建CSV和Excel报表所需的所有功能。 B类都是特定于过程的代码。两个类创建对方的实例
整个过程的本质迫使我让Class A调用一个包含在Class B中的方法。这个问题 - 我刚刚发现 - 是Class A需要创建一个Class B的实例来完成这个操作,Class B已经创建了A类的一个实例,导致无限循环。
什么是我处理这个问题的正确方法?如果我只能在方法论上指出正确的方向,我应该能够弄明白。
我有一个使用两个类--A和B的Web表单.A类包含创建CSV和Excel报表所需的所有功能。 B类都是特定于过程的代码。两个类创建对方的实例
整个过程的本质迫使我让Class A调用一个包含在Class B中的方法。这个问题 - 我刚刚发现 - 是Class A需要创建一个Class B的实例来完成这个操作,Class B已经创建了A类的一个实例,导致无限循环。
什么是我处理这个问题的正确方法?如果我只能在方法论上指出正确的方向,我应该能够弄明白。
你是什么意思的过程特定的代码?如果这是您的业务代码,那么看起来很清楚,两个类之间的区别在于ClassA是您的应用程序服务,而ClassB是您的业务逻辑。
尝试并解开类,以便您的业务类使用CSV类,但是您的CSV类不使用您的业务类。
不是让每个类创建对方,而是使用构造函数注入技术,其中每个类在其中存在依赖关系,存储在专用字段中,并在那里使用,而不是创建一个新的,以便无论启动此过程一次创建并根据需要传递给另一个。
难道你不能将其中的一个转换为接口(也许是A类),只是在其他类中实现? – Brian
我编辑了你的标题。请参阅:“[应该在其标题中包含”标签“](http://meta.stackexchange.com/questions/19190/)”,其中的共识是“不,他们不应该”。 –
你可以有一个布尔型的构造函数,只有实例化类A(如果它是真的) – tinstaafl