我试图了解如果实例具有特定值,如何向实例添加协议一致性。这是一个"愚蠢的"我试图理解的例子。
enum TypeOfFigure {
case square, circle, triangle
}
protocol Figure {
var type: TypeOfFigure { get }
}
protocol Square {}
protocol Circle {}
protocol Triangle {}
class FigureType: Figure {
let type: TypeOfFigure
init (type: TypeOfFigure) {
self.type = type
switch type {
case .square: //extension self: Square {}
case .circle: //extension self: Circle {}
case .triangle: //extension self: Triangle {}
}
}
}
答案 0 :(得分:4)
我提出了另一种方法
您可以使用工厂方法:
class FigureTypeFactory {
static func createFigure(withType type: TypeOfFigure) -> Figure {
switch type {
case .square: return new FigureSquare()
case .circle: return new FigureCircle()
case .triangle: return new FigureTriangle()
}
}
}
class Figure { }
class FigureSquare: Figure, Square { }
答案 1 :(得分:1)
从“Swift编程语言”开始:
然后可以通过类,结构或枚举来采用该协议,以提供这些要求的实际实现。任何满足协议要求的类型都被认为符合该协议。
因此,您无法将协议一致性添加到特定实例。