디자인 패턴 정리 - Adapter Pattern, Facade Pattern
·
CS/GoF의 Design Pattern 정리
Adapter Pattern 클래스의 인터페이스를 클라이언트가 원하는 형태의 또 다른 인터페이스로 변환한다. Adapter는 호환되지 않는 인터페이스 때문에 동작하지 않는 클래스를 동작할 수 있게 만들어준다. Object Wrapping의 역활을 해서 서로 호환되지 않는 인터페이스를 연결할 수 있게 해준다. 설명 문제: 사용 객체의 API가 서로 다른 경우 해결: 함수를 변환하는 객체를 중간에 넣어줌으로서 변경을 최소화한다. 예시 배열과 리스트에 대한 다른 사용 메소드가 있다. 배열 arr[10]으로 선언 arr[0]로 접근 length()로 크기 얻음 중간 삽입 시 새로운 배열 선언 후 앞 뒤에 기존 값을 넣어줌 중간 값 삭제 시 새로운 배열 선언 후 제거한 값을 제외하고 넣어줌 리스트 LinkedLi..
디자인 패턴 정리 - DAO Pattern Refactoring with Generic
·
CS/GoF의 Design Pattern 정리
DAO Pattern Refactoring with Generic Generic을 사용하여 DAO 인터페이스와 DaoImpl 클래스를 구현 클래스와 분리한다. DAO 인터페이스와 DaoImpl 클래스를 일반화하여 사용할 수 있다. 따라서 다른 클래스에서도 상속하여 원하는 대로 함수를 오버라이드하여 사용할 수 있다. DAO 인터페이스 abstract 메소드를 사용한다. 하위 클래스와 철저하게 분리하여 작성해야한다. public abstract class DaoImpl implements DAO { String dbTableName; // 추상 메소드 public abstract Statement getStatement(); public abstract String getInstanceValueQuery(D..
디자인 패턴 정리 - DAO Pattern
·
CS/GoF의 Design Pattern 정리
DAO Pattern DAO 패턴의 사용 목적 비지니스 로직과 DB를 분리하기 위해서 사용하는 패턴이다. DAO는 Data Access Object의 약자로 DB의 접근을 전담하게 된다. DB를 사용하는 방법이 변경되더라도 클라이언트 로직이 변경되지 않도록 DB 로직을 캡슐화 하여 분리하는 방법. 설계 DAO : 기본적인 CRUD 인터페이스를 제공한다. DaoImpl : DAO 인터페이스를 구현한 구체 클래스이다. Value Object : DAO를 사용하여 데이터를 저장하는 POJO (plain old java obj) JDBC (Java Database Connectivity) 데이터베이스 비종속적 표준 자바 API이다. 다양한 DB를 동일한 인터페이스로 사용할 수 있도록 추상화 해준다. 각종 DB는..
디자인 패턴 정리 - Singleton Pattern
·
CS/GoF의 Design Pattern 정리
Singleton Pattern 여러 객체가 생성되면 상태 관리가 어렵다. 이를 해결하기 위해 객체 생성자를 중앙에서 관리하는 방법. 객체가 한개이므로 항상 일관된 상태이다. 멀티 쓰레드에서는 문제가 될 수 있다. (해결방법 존재) 싱글톤 패턴 구현 방법 private 디폴트 생성자를 만든다. 싱글톤 인스턴스를 저장하는 정적 멤버 변수를 생성한다. 싱글톤 인스턴스를 반환하는 정적 팩토리 메소드를 구현한다. ChocolateBoiler.java _ 코드 public class ChocolateBoiler { private static ChocolateBoiler instance = null; private boolean empty; private boolean boiled; private Chocolate..
디자인 패턴 정리 - Factory Method Pattern
·
CS/GoF의 Design Pattern 정리
Factory Method Pattern 부모(상위) 클래스에 알려지지 않은 구체 클래스를 생성하는 패턴이며, 자식(하위) 클래스가 어떤 객체를 생성할지를 결정하도록 하는 패턴. 객체 생성용 인터페이스를 정의하고 해당 인스턴스를 상속한 서브클래스가 어떤 클래스를 인스턴스화(객체 생성) 할 지 결정할 수 있도록 한다. 팩토리 메소드는 객체 생성을 서브 클래스에서 할 수 있도록 미룰 수 있게 한다. Q. 왜 굳이 자식 클래스에서 객체를 생성하도록 미루는 것이고 얻을 수 있는 장점이 뭘까? 실제 객체를 생성하기 위해서 new를 사용한다. new를 호출해서 객체를 생성하게 되는데 생성할 객체가 다양하고 추가/삭제 등 변경이 잦다면 어떻게 될까? A. 클라이언트 단의 잦은 코드 수정이 불가피하게 되고 이는 객체지..
디자인 패턴 정리 - Decorator Pattern
·
CS/GoF의 Design Pattern 정리
Decorator Pattern 객체에 추가적인 요건을 동적으로 추가해주는 패턴으로, 서브 클래스를 만들지 않고 기능을 유연하게 확장할 수 있게 한다. 데코레이터 패턴에서의 상속은 공통적인 타입으로 추상화하기 위한 용도가 주 목적이다. 데코레이터는 인터페이스/추상 클래스로서 역활을 하고 이를 상속받은 클래스들은 컴포넌트를 꾸미기 위한 구현을 갖게 된다. 컴포넌트는 바로 사용되거나 데코레이터레가 붙어서 사용될 수 있다. 예시 데코레이터 패턴을 일상생활의 예시로 커피를 들 수 있다. 커피를 생각해보면 에스프레소, 콜드블루는 컴포넌트가 될 수 있고 얼음, 시나몬 가루, 우유, 두유, 샷, 자바칩 등은 모두 데코레이터 클래스를 상속받은 데코를 위한 클래스가 될 수 있다. 이때, 최상위 추상 클래스/인터페이스를 ..
디자인 패턴 정리 - Observer Pattern
·
CS/GoF의 Design Pattern 정리
Observer Pattern 옵저버 패턴은 객체의 상태 변화를 관찰하는 관찰자들, 즉 옵저버들의 목록을 객체에 등록하고 상태의 변화가 있을 때 마다 메서드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 패턴이다. 정리하면 변화가 발생될 것이 예상되는 객체에 옵저버를 보내놓고 변화가 일어나면 옵저버들을 통해 알림을 보내는 것이다. 다이어그램 Main.java 코드 public class MainWindow extends FrameWindow implements ActionListener, Subject { // 생략 private static final ArrayList observers = new ArrayList(); private PrimeObservableThread primeThr..
디자인 패턴 정리 - Strategy Pattern
·
CS/GoF의 Design Pattern 정리
Strategy Pattern _ 전략 패턴 같은 종류의 작업을 하는 알고리즘을 정의하고, 각 알고리즘을 캡슐화 하여 알고리즘들을 서로 바꿔 사용할 수 있도록 한다. strategy 패턴은 알고리즘을 사용하는 클라이언트로 부터 독립적으로 알고리즘을 바꿔서 적용할 수 있게 한다. 클래스 다이어그램 Main.java _ 코드 import java.text.ParseException; import java.text.ParsePosition; import java.util.Arrays; import java.util.Date; import java.text.SimpleDateFormat; public class Main { String[] names = {"CompareModifiedDate", "Compare..
디자인 패턴 정리 - Polymorphism
·
CS/GoF의 Design Pattern 정리
Polymorphism _ 다형성 하나의 객체가 여러개의 타입을 가질 수 있는것을 말한다. 부모 클래스 타입의 참조변수로 여러 자식 클래스 타입의 인스턴스를 참조할 수 있다. 인스턴스를 이용한 상속관계 및 오버라이딩을 사용하여 구현한다. Main.java _ 코드 import Converter.DocxDocConverter; import Converter.OdtDocConverter; import Converter.PdfDocConverter; public class Main { public static void main(String[] args) { WordProcessor wp = new WordProcessor("new doc"); wp.setSpellChecker(new EngSpellChecke..
7주차. 메모리 관리 (2) - 연속 할당, 불연속 할당 (Paging & 2-Level Page Table)
·
CS/운영체제 정리
Allocation of Physical Memory 메모리는 일반적으로 두 영역으로 나뉘어서 사용된다 OS 상주 영역 interrupt vector와 함께 낮은 주소 영역 사용 사용자 프로세스 영역 높은 주소 영역 사용 사용자 프로세스 영역의 할당방법 Contiguous allocation 각각의 프로세스가 메모리의 연속적인 공간에 적재되도록 하는 방법 Fixed partition allocattion Variable partition allocation Noncontiguous allocation 하나의 프로세스가 메모리의 여러 영역에 분산되어 할당하는 방법 현대에 사용하고 있는 방식이다 Paging : 일정한 크기로 물리 메모리 공간을 잘개 쪼갬 Segmentation : 논리적 단위로 물리 메모리..