[iOS/Swift] 앱 개발의 실무적 접근 방식으로 배우는 디자인 패턴 ~Composite~
8266 단어 iOSSwift신인 프로그래머 응원디자인 패턴
매우 일반적인 iOS 앱 개발의 일반적인 상황
Swift의 핵심 라이브러리 및 프레임 워크에서 사용되는 패턴
주목하여 디자인 패턴을 다시 배워 본 기록입니다.
관련 기사 목록
[iOS/Swift] 앱 개발의 실무적 접근 방식으로 배우는 디자인 패턴
Composite 패턴 개요
사용소
인용구 : Cocoa Design Patterns (Retired Document)
샘플 코드
Swift 버전은 5.1입니다.
protocol DirectoryEntry {
var name: String { get }
func remove()
}
final class File: DirectoryEntry {
let name: String
init(name: String) {
self.name = name
}
func remove() {
print("\(name)を削除しました")
}
}
final class Directory: DirectoryEntry {
let name: String
private var entryList = [DirectoryEntry]()
init(name: String) {
self.name = name
}
func add(entry: DirectoryEntry) {
entryList.append(entry)
}
func remove() {
for entry in entryList {
entry.remove()
}
print("\(name)を削除しました")
}
}
// Usage
let dir1 = Directory(name: "dir1")
let file1 = File(name: "file1")
dir1.add(entry: file1)
// dir1
// ∟file1
let dir2 = Directory(name: "dir2")
let file2 = File(name: "file2")
let file3 = File(name: "file3")
dir2.add(entry: file2)
dir2.add(entry: file3)
// dir2
// ∟file2
// ∟file3
dir1.add(entry: dir2)
// dir1
// ∟file1
// ∟dir2
// ∟file2
// ∟file3
let file4 = File(name: "file4")
dir1.add(entry: file4)
// dir1
// ∟file1
// ∟dir2
// ∟file2
// ∟file3
// ∟file4
dir1.remove()
// "file1を削除しました"
// "file2を削除しました"
// "file3を削除しました"
// "dir2を削除しました"
// "file4を削除しました"
// "dir1を削除しました"
Reference
이 문제에 관하여([iOS/Swift] 앱 개발의 실무적 접근 방식으로 배우는 디자인 패턴 ~Composite~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/y-some/items/43ca08e421f80954e916
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
protocol DirectoryEntry {
var name: String { get }
func remove()
}
final class File: DirectoryEntry {
let name: String
init(name: String) {
self.name = name
}
func remove() {
print("\(name)を削除しました")
}
}
final class Directory: DirectoryEntry {
let name: String
private var entryList = [DirectoryEntry]()
init(name: String) {
self.name = name
}
func add(entry: DirectoryEntry) {
entryList.append(entry)
}
func remove() {
for entry in entryList {
entry.remove()
}
print("\(name)を削除しました")
}
}
// Usage
let dir1 = Directory(name: "dir1")
let file1 = File(name: "file1")
dir1.add(entry: file1)
// dir1
// ∟file1
let dir2 = Directory(name: "dir2")
let file2 = File(name: "file2")
let file3 = File(name: "file3")
dir2.add(entry: file2)
dir2.add(entry: file3)
// dir2
// ∟file2
// ∟file3
dir1.add(entry: dir2)
// dir1
// ∟file1
// ∟dir2
// ∟file2
// ∟file3
let file4 = File(name: "file4")
dir1.add(entry: file4)
// dir1
// ∟file1
// ∟dir2
// ∟file2
// ∟file3
// ∟file4
dir1.remove()
// "file1を削除しました"
// "file2を削除しました"
// "file3を削除しました"
// "dir2を削除しました"
// "file4を削除しました"
// "dir1を削除しました"
Reference
이 문제에 관하여([iOS/Swift] 앱 개발의 실무적 접근 방식으로 배우는 디자인 패턴 ~Composite~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/y-some/items/43ca08e421f80954e916텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)