cs/디자인 패턴(20)
-
[디자인 패턴] Builder Pattern by python, java
Builder 패턴 builder패턴은 커다란 구조물(클래스) 등을 만들 때 차근차근히 쌓아 올리는 구조를 갖는 builder패턴을 공부해보겠습니다. 얼핏 보면 이전에 공부했던 템플릿 패턴과 비슷한 면이 있습니다. 템플릿 패턴은 메소드들로 큰틀을 갖추어 놓고 추상클래스의 상속을 통해 구체적으로 실행되게 만들었습니다. 이것도 비슷하게 constructor라는 메소드에 추상클래스의 메소드들로 어떻게 실행될지 정해 놓고 어떤 객체가 전달되냐에 따라 실행 결과가 달라집니다. 한개의 폴더에서 실행됩니다. Builder.java public abstract class Builder{ public abstract void makeTitle(String title); public abstract void makeStr..
2019.01.10 -
[디자인 패턴]Prototype 패턴
Prototype 패턴 prototype 패턴은 객체를 자바의 기준으로 new를 통해서 계속해서 객체를 만드는 것이 아니라 한번 만들었던 것을 저장하고 필요할때 마다 복사를 통해 사용하는 패턴입니다. prototype 패턴은 아래 세개의 상황에서 사용하면 좋습니다. 1. 오브젝트 개수가 많아 모두 클래스로 만들어야 하는 경우 2. 비슷한 객체를 계속해서 만들어야 하는 경우 3. framework와 생성할 인스턴스를 분리하고 싶은 경우 예제를 들어서 더 자세히 설명해보겠다. 디렉토리 구조 Manger.java package framework; import java.util.*; public class Manger { HashMap showCase = new HashMap(); public void regi..
2019.01.08 -
[디자인 패턴] Factory Pattern(팩토리 패턴) by java, javascript, python
Factory Pattern [디자인 패턴] - [디자인 패턴] template Pattern(템플릿 패턴) by python, java 이전글(템플릿 패턴을 먼저 보고 읽어주세요.) 지난 시간에 했던 템플릿 패턴을 이용하여 Factory Pattern을 구현해보겠습니다. 이전 글에서 공부한 템플릿 패턴은 추상클래스를 통해 프로그램의 큰틀을 잡아 놓고 하위클래스들을 어떻게 구현하나에 따라서 각기 다르게 실행되게 하는 템플릿 패턴을 만들어 보았습니다. 여기서 팩토리 패턴은 구체화 된 클래스의 객체를 만들 때 서브클래스에서 만들게 하는 방법입니다. 그래서 이름 그대로 객체를 만드는 공장이라고 하여서 Factory Pattern으로 불린답니다. 결론적으로 객체의 생성을 subClass에 맡김으로써 클래스의 결..
2019.01.05 -
[디자인 패턴] template Pattern(템플릿 패턴) by python, java
template Pattern 추상 클래스가 있고 이를 상속하여 구체적으로 구현하는 하위클래스가 있습니다. 하위클래스 들이 어떻게 구현되는지에 따라 프로그램이 다르게 실행 될 것입니다. 하지만 템플릿 패턴은 상위 클래스에서 큰 흐름을 제공해주고 하위 클래스에 구체적인 내용을 결정하는 디자인 패턴을 템플릿 패턴이라고 합니다. 요약 추상클래스를 통해 프로그램 큰 흐름을 제공해주고 이를 상속하는 클래스들이 구체적으로 구현하는 패턴입니다. //추상 클래스public abstract class AbstractPrint { public abstract void open(); public abstract void print(); public abstract void close(); public void write()..
2019.01.04 -
[디자인 패턴] Adapter Pattern
Adapter Pattern Adapter Pattern은 기존에 존재하는 클래스를 자기의 입맛에 맞게 특정한 클래스, 인터페이스를 통해서 바꾸어 줄 수 있는 패턴이다. 쉽게 예를 들면 노트북을 충전하려면 직류 12V가 필요한데 공급되는 건 교류 100V이다. 교류 100V를 AC 어댑터를 통해서 직류로 바꾸듯이 기존에 있는 것(교류 100V)을 특정한 클래스, 인터페이스(AC어댑터)를 통해서 12V로 바꾸어주는 것이 Adapter 패턴이다. 언제 사용하면 좋을까? 기존의 클래스를 건드리지 않고 다른 상황에 맞게 개조를 하여 사용해야할때 유용합니다. 기존의 코드들은 오류가 없다는 증거가 있기때문에 오류가 발생하면 어댑터에 잘못이 있음으로 기존의 코드는 보지 않아도 됩니다. 또는 기존의 클래스 없이 외부 ..
2019.01.02 -
[designPatten] Iterator(이터레이터) by java, python, javascript
Iterator 각언어별로 편하게 사용할 수 있게 기본기능을 제공해주지만 직접 구현하는 것 만큼 좋은 공부가 없다고 생각하여 직접 구현한 것도 있고 파이썬의 경우에는 가볍게 제공하는 기능이 있어서 이를 사용하였다. 그럼 설명을 시작하겠다. 그리고 Iterator에서 조금 더 진화한 Generator라는 기능도 있는데 이는 다음글에서 적어보겠다. 일반적으로 배열을 위해서 반복문을 사용하며 for(int i = 0; i < arr.length; i++){arr[i];} 위와 같은 형태나 while 등을 사용합니다. i는 1씩 증가하면서 조건에 맞추어 반복 하는 것이 일반적인 반복문의 기능입니다. 반복문에 사용하고 있는 i나 조건들을 사용하는 기능을 추상화해서 일반화한 것이 바로 Iterator입니다. 그럼 ..
2018.12.30