본문 바로가기

디자인패턴5

swift 디자인 패턴 - 템플릿 메서드 패턴 swift 디자인 패턴 - 템플릿 메서드 패턴 학습목표 공통 코드의 재사용 방법을 부분적으로 이해하기 여러회사의 모터 지원하기 현대모터를 이용해서 엘리베이터를 제어하는 시스템이라면 HyundaiMotor 클래스에 move 메서드를 정의할 수 있다. HyundaiMotor 클래스는 move 메서드를 실행할 때 안전을 위해 문(Door 클래스)이 닫혀 있는지 조사 할 필요가 있다. 따라서 HyundaiMotor 클래스에서 Door 클래스로의 연관 관계를 정의했다. 또한 엘리베이터가 이동 중이면 모터를 구동시킬 필요가 없다. MotorStatus, DoorStatus, Direction은 Enumeration 으로 각각 모터의 상태 (정지 중, 이동 중) , 문의상태 (닫힘상태, 열림상태) , 이동 방향(위,.. 2022. 11. 10.
swift 디자인 패턴 - 데코레이터 패턴 swift 디자인 패턴 - 데코레이터 패턴 목표 : 독립적인 추가 기능의 조합 방법 이해하기. 데커레이터 패턴을 통한 기능의 조합 방법 이해하기. 도로 표시 방법 조합하기 자동차의 네비게이션에서 도로를 표시해 주는 기능이 있다. 기본적으로 도로를 표시해 주는 기능이 있고, 추가적으로 차선을 표시해주는 기능이 있다. RoadDisplay 클래스 : 기본 도로 표시 기능 담당 RoadDisplayWithLane 클래스 : 기본 도로 표시에 추가적으로 차선을 표시하는 기능 담당 이때 RoadDisplayWithLane 클래스는 RoadDisplay 클래스의 하위 클래스로 설계를 한다. [코드 1] import Foundation import CoreLocation /// 기본 도로 표시 클래스 class Ro.. 2022. 11. 8.
swift 디자인 패턴 - 옵저버 패턴 swift 디자인 패턴 - 옵저버 패턴 목표 : 데이터의 변화를 통보하는 방법 이해하기 옵서버 패턴을 통한 통보의 캡슐화 방법 이해하기 ✅여러가지 방식으로 성적 출력하기 입력된 성적값을 출력하는 프로그램 코드 작성해보자 필요한 클래스는 입력된 점수를 저장하는 ScoreRecord 클래스와 점수를 목록의 형태로 출력하는 DataSheetVIew 클래스가 필요하다. 그리고 성적이 입력된 경우에는, 즉 ScoreRecord 클래스의 addScore 메서드가 실행될 때 성적을 출력하려면 ScoreRecord 클래스는 DataSheetView 객체를 참조해야 한다. ScoreRecord 클래스의 addScore 메서드가 호출되면 ScoreRecord 클래스는 자신의 필드인 scores 객체에 점수를 추가한다. 그.. 2022. 11. 7.
swift 디자인 패턴 - 커맨드 패턴 swift 디자인 패턴 - 커맨드 패턴 목표 : 기능을 캡슐화로 처리하는 방법 이해하기 커맨드 패턴을 통한 기능의 캡슐화 방법이해하기 만능 버튼 만들기 기능 : 눌리면 특정 기능을 수행 [코드] //MARK: 1.일반 class Lamp { func turnOn(){ print("lamp on") } } class Button{ private var theLamp:Lamp? init(theLamp: Lamp? = nil) { self.theLamp = theLamp } func pressed(){ theLamp?.turnOn() } } let lamp = Lamp() let lampButton = Button(theLamp: lamp) lampButton.pressed() //lamp on print(".. 2022. 11. 4.
swift 디자인 패턴 - 상태패턴(스테이트 패턴) swift 디자인 패턴 - 상태패턴(스테이트 패턴) 목표 1.상태를 캡슐화로 처리하는 방법 이해하기 2.스태이트 패턴을 통한 상태 변화의 처리 방법 이해하기 3.새로운 상태를 추가할 수 있는 방법 이해하기 실세계의 많은 시스템은 다양한 상태가 있고 상태에 따라 다른 행위를 한다. 상태란 객체가 시스템에 존재하는 동안, 즉 객체의 라이프 타임 동안 객체가 가질 수 있는 조건이나 상황을 표현한다. 예) 객체가 어떤 상태에 있는 동안 어떤 액티비티 등을 수행하거나 특정 이벤트가 발생하기를 기다리는 것. 형광등 만들기 작동방식 형광등이 꺼져 있을 때 외부에서 On 버튼을 누르면 형광등이 켜지고, 형광등이 켜져 있을 때 Off 버튼을 누르면 꺼진다. 만약 이미 형광등이 켜져 있는 상태에서 On 버튼을 누르면 형광.. 2022. 11. 3.