본문 바로가기

전체 카테고리326

Observer Pattern 옵저버 패턴 - 행동, 구독자(observers)와 주제(subject) | Design pattern 디자인 패턴 Observer Pattern Observer pattern allows a number of observer objects to synchronize its state with the subject's state. Observers(구독자, 가입자, 관찰자) 에게 특정 주제(subject)를 Push 하여 전달하거나 Pull 해서 Observer 를 필요시 주제를 가져온다. 옵저버 패턴을 트위터에 비유하여 표현한 사진을 보니 쉽게 이해가 되는 것 같다. 2개의 객체가 loosely coupled 되어있을때 , 두 객체는 상호작용한다. but 그것들은 서로를 모른다. 옵저버 패턴은 subject와 loosely coupled 된 옵저버들의 객체 설계 제공한다. 왜 그럴까? 오직 한 주제가 특정 인터페이스.. 2021. 11. 9.
Strategy Pattern ㅡ 행위, 행동(Behavior)을 인터페이스로 추상화 시켜 구성(composition)을 통해 행동들을 사용 | Design Pattern 디자인 패턴 Strategy Pattern 클래스별로 캡슐화되어 있는 객체들을 교체할 수 있도록 함으로써 같은 작업을 다른 알고리즘으로 사용할 수 있도록 하는 패턴 Strategy 클래스 내 각각 캡슐화 그리고 구성을 통해 알고리즘 바꿀 수 있다. Strategy Pattern 은 클라이언트가 독립적으로 다양한 알고리즘을 사용한다. 다형성을 이용하여 특정 객체에 종속되지 않도록 한다. 다른 부분을 분리하여 캡슐화한다. 상속하지 않는 대신 인터페이스를 통해 캡슐화(추상화)한다. (상속 대신 구성 사용) 분리된 strategies 인터페이스에서 behaviors(행동)이 정의된다. behavior 과 behavior을 사용하는 class 사이에는 더 나은 decoupling 이다. Behaviors 는 런타임시에도 변경.. 2021. 11. 4.
[Kotlin] 위젯 : 텍스트뷰 , EditText / 리소스 : drawable , mipmap 화면에 그려지는 디자인 요소 위젯 Common 텍스트, 버튼, 레이아웃 등 일반적으로 많이 사용되는 것들 Text 글자를 화면에 나타내거나 입력받을 수 있는 위젯 Buttons 버튼은 사용자로부터 클릭 또는 터치 관련 이벤트를 받을 수 있는 위젯 모음 Widgets 위젯은 이미지 , 웹 사이트, 별점 표시 , 진행 상태 등의 정보를 화면에 그리는 위젯 모음 텍스트뷰 test 속성에 직접 입력할 수도 있지만 권장하지는 않는다. 앱을 개발할 때 strings.xml에 사용할 텍스트를 미리 정의해높고 가져다가 사용하는 것을 권장한다. 다국어 처리, 텍스트 수정 등 앱을 관리하기에 용이하기 때문이다. app - res - values 디렉터리 아래에 strings.xml 파일이 있다. strings.xml te.. 2021. 10. 31.
Composite Pattern Example code, Designing Menus with Composite .java | Design Pattern디자인 패턴 Designing Menus with Composite Waitress Waitress는 MenuComponent 인터페이스/추상 클래스 를 통해 Menu 와 Menuitems에 access 한다. MenuComponent Menu 와 MenuItem 의 interface를 나타낸다. abstract class 를 통해 클래스 내에 원하는 기본 메소드 구현 제공 공통연산과 Menu 조작 연산으로 구성 공통연산 : getName, getDescription, getPrice, print 조작연산 : add, remove, getChild MenuItem Both Menu and Menus override print() Menu we’ll use the getName() andngetDescription().. 2021. 10. 27.
[Kotlin] Fast campus 강의 Android App 개발 (코틀린) 함수형 프로그래밍, .let .apply .run .also , Closure , 확장함수 , DSL , 커링(currying) 함수형 프로그래밍 순수함수와 고차함수 순수함수 : 결과가 같은 함수, 외부 레퍼런스 사용하지 않는 함수, 입력된 값의 결과는 언제나 같아야 한다. - 전역적 참고 X, 입력받아 처리 (변수 객체 함수..) 고차함수 : 함수형 변수를 입력 받고 함수형 변수를 리턴 ,상태(= 조건문)없는 순차적인 프로그래밍을 위해 함수를 받고 함수를 리턴하는 구조 // 함수를 매개변수로 받는 함수 fun fn1(func : (Int, Int)-> Int){ func(10,10).let{result -> println("결과값은 $result 입니다.")} } fun fn2(func : (Int, Int)-> Int){ println(func(10,10)) // n + n2 } fun fn3(func : (Int, Int)-.. 2021. 10. 24.
[Kotlin] Fast campus 강의 안드로이드 앱 개발 (코틀린) data class, Object data class 상속 불가, data 처리하기 위해 특화된 클래스data class 이름 () 안에 필드들을 정의할 수 있다. {} 안에 멤버필드나 메소드를 정의할 수도 있다. data 클래스도 멀티리턴처럼 보일 수 있다. (Destructuring Declarations) 가장 유용한 것은 copy() 함수 일반 클래스와 데이터 클래스 정의 class A { var name : String = "clas A" var power : Int = 0 } data class DataA(var name : String = "이름없음",var level : Int) { var jop : String ="" // 연산자 오버로딩에 data class 많이 사용 operator fun plus (d : DataA.. 2021. 10. 21.
[Kotlin] Fast campus 강의 안드로이드 앱 개발 코틀린 / 클래스(class), 객체지향(OOP), 다형성 (polymorphism) 안드로이드 앱 개발 코틀린편. 객체지향 에서는 클래스의 기본 다형성 Abstract 추상 , Interface DataClass Object 에 대해서 다룰 것이다. 객체지향프로그래밍에서 interface와 abstract 를 이용한 다형성 프로그래밍이 중요하다. 2021.10.02 - [소프트웨어공학/디자인 패턴] - [디자인 패턴] 설계 원칙 [디자인 패턴] 설계 원칙 설계 원칙 기본 원칙들 Encapsulation, Abstraction Inheritance, Polymorphism Association/Aggregation/Composition 객체 : 상태와 행동으로 나타낸다. 객체지향 현실 세계의 개념(concepts or things)을.. javapp.tistory.com 디자인 패턴을 알.. 2021. 10. 18.
[Kotlin] Fast campus 강의 Android App 개발 (코틀린). 문법 [코틀린] Fast campus 패스트캠퍼스 내돈내산 안드로이드 앱 개발 코틀린편. 문법 인텔리제이에서 코틀린 메인 함수 단축키: psvm fun main(args : Array){...} Number 숫자형 // 숫자형 DataType 크기 순으로 선언 var doublev : Double = 110.111 //8 var floatv : Float = 110.1f //4 var longv : Long = 110L //8 var intv : Int = 20 //4 var shortv : Short = 30 //2 var bytev : Byte = 10 //1 println(doublev) println(floatv) println(intv) // 크기변환 후 대입, 메소드 사용 doublev = intv.. 2021. 10. 16.
Composite Pattern - 구조, 개별 객체와 복합객체를 통합적으로 다루기, children의 저장 순서가 요구될 때 / ex) 메뉴 | Design Pattern 디자인 패턴 Composite Pattern Treat individual objects and Composite of objects uniformly. 개별 객체와 복합 객체를 클라이언트에서 동일하게 사용 child가 parent에 대한 참조자를 가지면 - tree traversal이 용이해지며 - child 자신이 제거되기를 원하는 경우 편리함 children의 저장 순서가 요구되는 경우 Composite Object (복합 객체) 사용자 정의 클래스를 도메인으로 하는 속성을 가진 객체 복합 객체 시스템에서 기본으로 제공하지 않는 사용자 정의 클래스(user-defined class)를 도메인으로 하는 속성을 가진 객체를 복합 객체(composite object)라 한다. 복합 객체에서 사용자 정의 클래스를 도메.. 2021. 10. 14.
Facade 패턴 (퍼사드 패턴) - 구조, 통합 인터페이스 제공 | Design Pattern 디자인 패턴 / Facade Pattern 복잡한 시스템을 구조화하여 쉽게 사용 문제점) : 여러 개의 구성요소(interface)로 구성된, 사용 절차가 복잡한 시스템 Key Idea : subsystem (a set of interfaces)에 대해 통합 인터페이스 제공 예제 코드 public class HomeTheaterFacade { Amplifier amp; Tuner tuner; DvdPlayer dvd; CdPlayer cd; Projector projector; TheaterLights lights; Screen screen; PopcornPopper popper; public HomeTheaterFacade(Amplifier amp, Tuner tuner, DvdPlayer dvd, CdPlayer c.. 2021. 10. 12.
Adapter 어댑터 패턴 - 구조, client 가 요구하는 인터페이스와 제공된 클래스의 인터페이스가 일치하지 않을 때 | Design Pattern 디자인 패턴 구조에 따른 패턴 분류 적용 범위 Scope 클래스 class - 클래스 간 관계 - 주로 inheritance 사용 - 정적) 컴파일 시 결정됨 Adapter (class) (상속) 객체 object - 객체 간 관계 - 주로 composition 사용 - 동적) 실행 시 변경 가능 Adapter (object) (구성) Facade (퍼사드) Composite Decorator Proxy Bridge Flyweight 인터페이스 관련 패턴 • Adapter pattern • Facade pattern • Composite pattern • Bridge pattern ※ 모두 구조 패턴에 속함 Adapter 구조 패턴 언제 ? -> Interface mismatching client 가 요구하는 인터페.. 2021. 10. 10.
싱글톤 패턴 코드 (Singleton pattern java code) | Design Pattern 디자인 패턴 / 초기화 Eager 초기화 클래스 적재시 1회 실행, 클래스 인스턴스 생성을 실제로 사용되기전에 먼저 진행 Static initializer private static final Singleton INSTANCE = new Singleton(); 예제 코드 public class Singleton { //1. 정적초기화문 + 2. private 생성자 -> 유일성 보장 private static Singleton uniqueInstance = new Singleton(); private Singleton() {} // 외부 호출 (new Singleton() 불가) // 3. 모든 client 가 사용할 global access point 제공 public static Singleton getInstanc.. 2021. 10. 8.