我试图在不使用任何框架的情况下在代码中进行依赖项注入,而重构时我尝试从外部传递依赖项。我现在面临的问题是默认参数值所需的委托声明。
import java.text.ParseException;
public class TestOddEvenExample {
public static void main(String args[]) throws ParseException {
int x = 24;
oddEvenChecker(x);
int xx = 3;
oddEvenChecker(xx);
}
static void oddEvenChecker(int x) {
if (x % 2 == 0)
System.out.println("You entered an even number." + x);
else
System.out.println("You entered an odd number." + x);
}
}
在以上代码段中,以上对象的创建需要从外部进行委托才能传输结果。在Swift中,他们可以在参数中声明该自引用。
从技术上讲,这时似乎没有创建self,因为这是init方法,如果没有其他实现方法,我现在想使用另一个选项。
这将创建没有委托的init(service : MYService = MYService(withDelegate: self)) {
}
对象,我必须公开另一种接受委托的方法。
答案 0 :(得分:0)
注入任何服务似乎是一种好方法,因为我希望MYService
class
也符合某些protocol
,以便可以注入符合该{{1} }。对于这个问题,我想建议将委托也保留为如下所示的可注入对象,
protocol
为此,您必须公开服务init(service: MYService = MYService(), serviceDelegate: MyServiceDelegate? = nil) {
if let delegate = serviceDelegate {
service.delegate = delegate
} else {
service.delegate = self
}
}
,因为它在delegate
(Swift
,UITableView
等)中应该是完全正常的
我认为您想将拥有UITextField
的{{1}}设置为默认class
,所以我将service
设置为delegate
,以便如果没有在那里,如果不是delegate
传递的optional
,则该类将是委托。