언어
-
디자인 패턴 (6) - 싱글톤 패턴언어/디자인패턴 2023. 9. 11. 16:23
1. 싱글톤 패턴이란? - 단 하나의 유일한 객체를 만들기 위한 코드 패턴 - 메모리를 절약하기 위해 인스턴스 필요시 새로 만들지 않고 기존의 인스턴스 가져와 활용하는 기법 - 보통 싱글톤 패턴이 적용된 객체가 필요한 경우는 리소스를 많이 차지하는 역할을 하는 무거운 클래스들 ex 데이터 연결 모듈 (스레드풀,커넥션 풀 등등) 1.1 싱글톤 패턴 구현 원리 - 생성자에 private를 붙여주기만하면된다. - 전역변수로 미리 생성된 객체를 얻는다. 1.2 여러가지 싱글톤 패턴 구현 방법 - Eager Initialization > 가장 직관적이면서 심플한 방법 > static final이라 멀티 쓰레드 환경에서도 안전하다. > static멤버는 당장 객체 사용하지 않더라도 메모리에 적재하기 때문에 리소스가..
-
디자인 패턴 (5) - 추상 팩토리 패턴언어/디자인패턴 2023. 9. 11. 14:09
1. 추상 팩토리 패턴이란? - 연관성 있는 객체 군이 여러개 있을 경우 이를 묶어 추상화 - 구체적 상황이 주어지면, 팩토리 객체를 통해 객체 군을 구현화 하는 생성 패턴이다. - 핵심은 제품군 집합을 타입별로 찍어낼 수 있다는 점이다. 1.1 추상 팩토리 패턴 구조 1. AbstractFactory: 최상위 공장 클래스 -> 여러 제품군을 생성하는 여러 메서드를 포함 2. ConcreteFactory: 서브 공장 클래스들은 타입에 맞는 제품 객체 반환하도록 메소드 오버라이딩 3. AbstractProduct: 각 제품군을 추상화 (대분류)한 인터페이스 4. ConcreteProduct : 각 타입 제품의 구현체 -> 팩토리를 통해 생성됨 5. Client : 추상화된 인터페이스만으로 제품을 받으므로,..
-
디자인 패턴 (4) - 팩토리 패턴언어/디자인패턴 2023. 9. 11. 12:28
1. 팩토리 메소드 패턴이란? - 객체 생성 고장 클래스로 캡슐화 처리하여 대신 생성하는 생성 디자인 패턴이다. - 즉 클라이언트가 직접 new 연산자를 통해 객체를 생성하는 것이 아닌, 제품 객체 생성을 도맡은 공장 클래스 생성 -> 이를 상속하는 서브 클래스에서 제품 생성 책임 - 객체 생성에 필요한 템플릿 미리 구성하고, 객체 생성에 관한 전처리나 후처리를 생성 과정을 다양하게 처리 1.2 팩토리 메서드 패턴 구조 1. Creator : 최상위 공장 클래스, 팩토리 메서드 추상화 -> 서브클래스가 구현하도록 한다. -> 객체 생성 처리 메서드: 객체 생성 관한 전처리, 후처리 템플릿 메소드 -> 팩토리 메서드 : 서브 공장 클래스에서 재정의할 객체 생성 추상 메서드 (각 서브 팩토리의 공통코드) 2..
-
디자인패턴 (3) - 데코레이터패턴언어/디자인패턴 2023. 9. 8. 16:42
1. 데코레이터 패턴이란? - 데코레이터 패턴은 대상 객체에 대한 기능 확장이나 변경이 필요할 때 - 상속이나 구현이 아닌, 객체의 결합을 통해 서브 클래싱을 대신 쓸 수 있는 구조 패턴이다. - 데코레이터 패턴을 이용하면 필요한 추가 기능의 조합을 런타임에서 동적으로 생성할 수 있다. - Component : 원본 객체와 장식된 객체 모두 묶는 역할 ( 모두를 하나의 타입으로 묶음 [공통 책임 수행]) - ConcreteComponent: 원본 객체 (추후에 데코레이팅 될 객체임) - Decorator: 추상화된 장식자 클래스 -> 원본 객체를 구성(의존)한 필드와 인터페이스의 구현 메서드 가짐 - ConcreteDecorator : 구체 장식자 클래스 * 변화할 수 있는 행동을 인터페이스화 -> 이를..
-
디자인 패턴 (2) - 옵저버 패턴언어/디자인패턴 2023. 9. 8. 15:34
1. 옵저버 패턴이란: 옵저버(관찰자)들이 관찰하고 있는 대상자의 상태가 변화할 때, 대상자가 관찰자에게 통지하고, 관찰자들은 알림을 받아 조치를 취하는 행동 패턴이다. 다른 디자인 패턴들과 다르게 일대다의 의존성을 가진다. 주로 분산 이벤트 핸들링에 사용된다. - 옵저버 패턴의 흐름 > 한개의 관찰 대상자(Subjet)와 여러개의 관찰자(Observer)로 이루어짐 > Subject의 상태가 바뀌면 옵저버에 통보 > 통보 받은 Observer는 해당 값을 처리 > Observer들은 Subject 그룹에서 추가/삭제 될 수 있다. EX) MVC패턴 Model과 View의 관계가 옵저버 패턴과 같다. 하나의 Model에 복수의 View가 대응 -* 발행자 코드 변경하지 않고 새 구독자 클래스를 도입 (O..
-
디자인패턴 (1) - 전략패턴언어 2023. 9. 7. 16:38
1. 전략 패턴이란? -> 객체가 할 수 있는 행위 분리 (인터페이스화) -> 행위에 대한 구현체를 생성하고, 구체적 행위 정의 (캡슐화) -> 추후 객체의 행위를 동적으로 바꾸고 싶은 경우 직접 행위를 수정하지 않고 전략(구현체)을 바꿔주기만 함으로써 행위를 유연하게 확장하는 방법을 말합니다. - 여기서 가장 중요한 두가지 과정은 아래와 같다. 1. 기존 행위 중 변화할 수 있는 특정 행위를 분리 -> 인페이스화 2. 행위에 대한 구현객체와 구상관계 만들기 > 알고리즘군을 정의하고 캡슐화해서 각각의 알고리즘군을 수정해서 쓸 수 있게 해준다. 전략패턴을 사용하면 클라이언트로부터 알고리즘을 분리해서 독립적으로 변경할 수 있다. 2. 오리 예제 - 오리를 생성해야하는데, 상황에 따라 오리가 가지는 특성이 다..
-
쓰레드 기본언어/JAVA 2023. 8. 25. 12:51
1. 멀티스레드의 개념 - 프로세스: 운영체제에서 실행중인 프로그램 - 멀티 태스킹: 두 가지 이상의 작업을 동시에 처리하는 것 (멀티프로세스,멀티스레드) - 스레드: 코드의 실행 흐름, 하나의 프로세스에서 멀티 태스킹 > 멀티 프로세스 환경에서 하나의 프로세스의 오류가 다른 프로세스에 영향x > 멀티 스레드는 하나의 스레드 예외는 다른 스레드에 영향 1.2 main 스레드 - 자바 프로그램은 메인 스레드가 main()메서드의 시작과 함께 실행된다. - 하나의 스레드는 첫 코드부터 순차적으로 실행, 마지막 코드 실행 혹은 return문을 만나면 종료 - 메인 스레드에서 추가 작업 스레드를 만들어서 실행 가능 - 멀티 스레드에서는 작업 중인 스레드가 남아있으면, 프로세스 종료하지 않는다. 2. 작업 스레드..
-
자바 네트워크 네트워크 입출력 (1) - TCP언어/JAVA 2023. 8. 22. 19:19
1. 네트워크 기초 - 네트워크는 여러 컴퓨터들을 통신 회선으로 연결하는 것 - LAN은 가정,회사,건물,특정 영역에 존재하는 컴퓨터 연결 - WAN은 LAN을 연결한 것이다. (WAN이 흔히 말하는 인터넷이다) - LAN과 LAN을 라우터가 연결 - 라우터와 LAN은 스위치로 연결 1.2 서버와 클라이언트 - 네트워크에서 유무선으로 컴퓨터가 연결되어 있다면, 실제로 데이터 주고받는 행위는 프로그램들이 한다. - 서비스를 제공하는 프로그램을 서버, 서비스 요청하는 프로그램을 클라이언트라 부른다. - 인터넷을 통해서 두 프로그램이 통신하기 위해서는 클라이언트가 서비스 요청, 서버는 처리 결과 응답으로 제공한다. 1.3 ip주소 - 컴퓨터의 고유주소이다. 컴퓨터마다 받는 것이 아니라, 네트워크 어답터(LAN..