我在Delphi(和Delphi术语)工作,但我的问题是语言中立。
假设您有一个类TClient,它将消息发送到另一个类TFacade。我假设TClient实例将具有TFacade类型的私有引用变量。 TClient中的某个方法将创建TFacade的实例并将其分配给此私有变量。 TClient客户端类需要使用TFacade类。
同时,TFacade与其他类(称为WorkerClass1,WorkerClass2和WorkerClass3)一起使用。据推测,TFacade实例做同样的事情 - 它们有私有的WorkerClass变量,并创建WorkerClasses的实例(可能在TFacade构造函数中)。 TFacade类需要使用WorkerClass单元。
那么信息如何从WorkerClasses返回到TClient?例如,如果TClient是一个表单,它可能会收到TFacade使用的用户输入 - 然后由WorkerClasses使用。但是,在WorkerClasses操作或使用信息之后,他们需要将信息传递回TClient(即,输出信息将以TClient形式显示)。
我希望这很清楚。基本上我只是问Class1是否在Class2中调用一个方法,而Class2在Class3中调用一个方法,Class3如何将信息发送回Class1?由于我是新手,所以不要害怕在回答中过于简单或过于具体。我可以处理它: - )
一如既往地感谢 - Al C.
答案 0 :(得分:2)
我希望这很清楚。基本上我只是问Class1是否在Class2中调用一个方法,而Class2在Class3中调用一个方法,Class3如何将信息发送回Class1?
它没有,因为你的设计中的条纹太紧密了。
相反,Class3仅与Class2通信。这样,Class1不需要对Class3一无所知,而反之亦然。这样,您可以换掉Class1和Class3,而无需更改除Class2之外的任何内容。
还有其他更高级的习语用于进一步减少耦合,但这足以让你开始。
答案 1 :(得分:1)
您有多种选择可供选择,需要权衡利弊。根据您想要实现的目标,某些选项可能不是“好”:
答案 2 :(得分:0)
一种可能的方法是使用回调,请参阅http://en.wikipedia.org/wiki/Callback_(computer_science)。
答案 3 :(得分:0)
信息可以在函数参数中传递,并且可以通过函数的返回值返回。