- Bài 1: Tổng quan ngôn ngữ Swift
- Bài 2: Hướng dẫn cài đặt Xcode và chạy một playground
- Bài 3: Những cú pháp cơ bản trong swift
- Bài 4: Kiểu dữ liệu
- Bài 5: Toán tử trong ngôn ngữ lập trình Swift
- Bài 6: Câu lệnh rẽ nhánh trong swift – Decision Making
- Bài 7: Chuỗi ký tự trong Swift - Character và String
- Bài 8: Vòng lặp trong swift – Loops
- Bài 9: Mảng Array trong swift
- Bài 10: Dictionary trong swift
- Bài 11: Optional trong Swift
- Bài 12: Functions trong swift
- Bài 13: Closure trong swift
- Bài 14: Enumeration trong swift
- Bài 15: Struct trong swift
- Bài 16: Classes trong swift
- Bài 17: Properties trong swift
- Bài 18: Methods trong swift
- Bài 19: Subscripts trong swift
- Bài 20: Inheritance trong swift
- Bài 21: Initialization trong swift
- Bài 22: Deinitialization trong swift
- Bài 23: ARC trong swift
- Bài 24: Type casting trong swift
- Bài 25: Extensions trong swift
- Bài 26: Protocols trong swift
- Bài 27: Generics trong swift
- Bài 28: Access control trong swift
Bài 26: Protocols trong swift - Lập trình Swift cơ bản
Đăng bởi: Admin | Lượt xem: 2144 | Chuyên mục: Swift
Khái niệm
Protocol được hiểu như là một kế hoạch chi tiết của thuộc tính, phương thức,.. để thích hợp với từng nhiệm vụ hay tính năng cụ thể. Sau khi được chấp nhận bởi các cấu trúc, liên kết hay class . Protocol có thể sau khi được chấp nhận bởi class, cấu trúc hoặc liệt kê (enum) để cung cấp sự thực thi của những yêu cầu đó.
Cú pháp protocol
protocol SomeProtocol {
protocol definition goes here
}
Yêu cầu thuộc tính
Bất kỳ một protocol nào bạn cũng có thể yêu cầu một kiểu phù hợp để cung cấp các kiểu thuộc tính như tên, kiểu, ..và protocol sẽ chỉ định ra những thuộc tính có thể lấy hay thuộc tính có thể thiết lập.
Nếu như thuộc tính được protocol yêu cầu là có thể lấy thì yêu cầu này hoàn toàn hợp lệ với kiểu thuộc tính để thiết lập nếu như chúng có ích cho mã của bạn.
Thuộc tính có khả năng lấy và thiết lập được chỉ ra rằng viết {get, set} sau khi mô tả kiểu của chúng, và thuộc tính có thể thiết lập bởi phương thức {get}.
protocol SomeProtocol {
var mustBeSettable: Int { get set }
var doesNotNeedToBeSettable: Int { get }
}
Yêu cầu phương thức
Protocol có thể yêu cầu một thể hiện của phương thức hay kiểu của phương thức để thực thi với kiểu phù hợp. Và thành phần định nghĩa của protocol sẽ được hình thành từ những phương thức này.
Trước khi định nghĩa một phương thức nào đó lập trình viên cần thêm từ khóa static trước yêu cầu phương thức đó.
protocol SomeProtocol {
static func someTypeMethod()
}
Bạn có thể tham khảo ví dụ dưới đây để hiểu cách định nghĩa protocol với yêu cầu phương thức thể hiện đơn.
protocol RandomNumberGenerator {
func random() -> Double
}
Để có một phương thức thể hiện random thì protocol sẽ yêu cầu bất kỳ kiểu phù hợp nào. Khi được gọi nó sẽ trả về giá trị Double dù cho nó không được chỉ định như 1 thành phần của protocol.
Protocol, RandomNumberGenerator ,hoàn toàn không tạo bất kỳ giả định nào về việc cách thức để mỗi số ngẫu nhiên được khởi tạo, thay vào đó nó chỉ yêu cầu trình khởi tạo cung cấp một cách chuẩn nhất để khởi tạo một số ngẫu nhiên mới.
Yêu cầu trình khởi tạo
Lập trình viên có thể viết những trình khởi tạo như thành phần định nghĩa của protocol một cách chuẩn xác cho trình khởi tạo thông thường.
protocol SomeProtocol {
init(someParameter: Int)
}
Protocol of types
Dù protocol không thực hiện bất kỳ tính năng nào của chúng. nhưng bất kỳ một protocol nào mà bạn tạo ra cũng sẽ trở thành kiểu đầy đủ, chính thức cho mã mà bạn sử dụng.
Bạn hoàn toàn có thể sử dụng 1 protocol trong nhiều trường hợp, nhiều kiểu được cho phép như:
- Một kiểu trả về hay tham số trong hàm, phương thức và trình khởi tạo
- Một kiểu biến số, hằng số hay thuộc tính.
- Một kiểu hạng mục trong từ điển, trong bảng hay ở những nơi khác.
protocol RandomNumberGenerator {
func random() -> Double
}
class Dice {
let sides: Int
let generator: RandomNumberGenerator
init(sides: Int, generator: RandomNumberGenerator) {
self.sides = sides
self.generator = generator
}
func roll() -> Int {
return Int(generator.random() * Double(sides)) + 1
}
}
Delegation
Đây là coi là một kiểu mẫu thiết kế cho phép cấu trúc hoặc class ủy quyền một số trách nhiệm của chúng đến thể hiện của kiểu khác. Để có trách nhiệm ủy quyền, đảm bảo cung cấp tính năng ủy quyền thì những mẫu thiết kế này đều được thực thi bởi một protocol.
protocol DiceGame {
var dice: Dice { get }
func play()
}
protocol DiceGameDelegate {
func gameDidStart(game: DiceGame)
func game(game: DiceGame, didStartNewTurnWithDiceRoll diceRoll: Int)
func gameDidEnd(game: DiceGame)
}
Theo dõi VnCoder trên Facebook, để cập nhật những bài viết, tin tức và khoá học mới nhất!
- Bài 1: Tổng quan ngôn ngữ Swift
- Bài 2: Hướng dẫn cài đặt Xcode và chạy một playground
- Bài 3: Những cú pháp cơ bản trong swift
- Bài 4: Kiểu dữ liệu
- Bài 5: Toán tử trong ngôn ngữ lập trình Swift
- Bài 6: Câu lệnh rẽ nhánh trong swift – Decision Making
- Bài 7: Chuỗi ký tự trong Swift - Character và String
- Bài 8: Vòng lặp trong swift – Loops
- Bài 9: Mảng Array trong swift
- Bài 10: Dictionary trong swift
- Bài 11: Optional trong Swift
- Bài 12: Functions trong swift
- Bài 13: Closure trong swift
- Bài 14: Enumeration trong swift
- Bài 15: Struct trong swift
- Bài 16: Classes trong swift
- Bài 17: Properties trong swift
- Bài 18: Methods trong swift
- Bài 19: Subscripts trong swift
- Bài 20: Inheritance trong swift
- Bài 21: Initialization trong swift
- Bài 22: Deinitialization trong swift
- Bài 23: ARC trong swift
- Bài 24: Type casting trong swift
- Bài 25: Extensions trong swift
- Bài 26: Protocols trong swift
- Bài 27: Generics trong swift
- Bài 28: Access control trong swift