我想知道你是否可以在swift中创建类似于C#中的静态类,即一个无法实例化的类,它只能有静态函数和静态属性。这些类型的课程是否可以迅速实现?
如果没有,给定Swift中可用的工具,重建这种设计模式的最有效方法是什么?
答案 0 :(得分:5)
是的,这是可能的。您只需将您的类定义为final
并制作构造函数private
,例如
final class Test {
private init() {
}
static func hello() {
print("hello")
}
}
Test.hello()
答案 1 :(得分:4)
不,Swift没有静态类的概念。但是如果你还没有可分配的属性,初始化会有什么不同?我可以想到两个选项:
将该类标记为final
,因此无法继承该类:final class MyClass { .... }
使用没有继承的struct
:struct MyUtilities { ... }
答案 2 :(得分:1)
您可以通过将初始值设定项设为私有来获得相同的功能,并在属性和方法之前使用static/class
关键字。使用final
关键字可确保您的类不能被子类化,如果使用final,则静态方法不再有意义,因为它们无法被覆盖。
class Bar{
private init(){}
static let x = 10
class func methodA(){
//do something
}
static func methodB(){
// do something else
}
}