본문 바로가기

전체 글27

Spring이 제공하는 싱글톤 컨테이너 싱글톤 패턴 더보기 소프트웨어 디자인 패턴에서 싱글턴 패턴을 따르는 클래스는, 생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나이고 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴한다. 이와 같은 디자인 유형을 싱글턴 패턴이라고 한다. 싱글톤 패턴은 클래스의 인스턴스가 딱 하나만 생성되는 것을 보장하는 디자인 패턴이다. 기본적으로 private 생성자를 이용해 객체 인스턴스를 외부에서 생성 (new 키워드 사용) 하지 못하도록 막는 것이다. 하지만 싱글톤 패턴을 static 영역에 instance를 생성하는 식의 순수 자바 코드로 구현하면 문제점이 발생한다. 의존관게상 클라이언트가 구체 클래스에 의존하게 되며 (DIP 위반), 자식 클래스를 만들기도 어렵다. 더불어 내부 .. 2021. 3. 1.
IoC, DI, 컨테이너 IoC (Inversion of Control, 제어의 역전) 더보기 제어 반전, 제어의 반전, 역제어는 프로그래머가 작성한 프로그램이 재사용 라이브러리의 흐름 제어를 받게 되는 소프트웨어 디자인 패턴을 말한다. 줄여서 IoC이라고 부른다. 전통적인 프로그래밍에서 흐름은 프로그래머가 작성한 프로그램이 외부 라이브러리의 코드를 호출해 이용한다. 기존으 프로그램에서는 클라이언트 구현 객체가 스스로 필요한 서버 구현 객체를 생성하고, 연결하고, 실행하는 방식이였다 즉 구현 객체 (프로그래머)가 프로그램의 제어 흐름을 조종하는 역할이였다. 반면, IoC을 따르면 프로그램에 대한 제어 흐름 권한을 외부(라이브러리)에서 가져가는 것이다 (AppConfig) 프레임워크 - 프로그래머가 작성한 코드를 제어하고, 대신 .. 2021. 2. 24.
AppConfig - 애플리케이션 동작 방식을 Configuration ! AppConfig 애플리케이션의 전체 동작 방식을 구성(config) 하기 위해, 구현 객체를 생성하고 연결하는 책임을 가지는 별도의 설정 클래스. 각각의 클래스에서 필요한 클래스의 객체를 생성하고 기능을 수행시켜야 할 때, 구현체를 바로 할당시키면 기능의 변경사항이 있을시에 클라이언트 객체 코드의 변경이 따라올 수 있다. 그래서 필요한 역할이 바로 동작 방식 구성을 책임지는 "AppConfig" 이다. AppConfig는 애플리케이션 동작에 필요한 구현 객체를 생성해주고, 생성자를 통해서 주입(연결) 해준다. 1. Class에서의 변경 기존 자바 코드에서는 인터페이스와 클래스를 분리해서 설계를 해놓기는 했지만, 클래스 내부에서 실행하는 객체의 변동이 DIP, OCP 위반 문제를 일으켰다. 변경점 : 클.. 2021. 2. 22.
기본적인 자바 문법 + IntelliJ 단축키 @계속 추가 예정 1. 자바 인터페이스 "역할"과 "기능"의 분리를 위해 가장 중요한 개념이 바로 인터페이스이다. 더보기 인터페이스는 자바 프로그래밍 언어에서 클래스들이 구현해야 하는 동작을 지정하는데 사용되는 추상 자료형이다. 이들은 프로토콜과 비슷하다. 인터페이스는 interface라는 키워드를 사용하여 선언하며, 메소드 시그너처와 상수 선언만을 포함할 수 있다. 추상 자료형이라는 단어에 모든 것을 담고있다. 여러 기능을 수행하는 클래스를 만들기 전에 제공해야하는 틀이라고 보면 된다. 자바에서 인터페이스는 오직 추상 메서드와 상수만을 멤버로 허용한다. 인터페이스의 기본적인 모습이다. 필수적인 기능을 하는 메서드를 가지고 있는 모습. 2. 자바 클래스 실질적인 기능을 구체적으로 담은, 객체를 생성하기 위해 어떤 데이터와.. 2021. 2. 20.
C++/ 다익스트라 알고리즘 (가중치 방향 그래프), 신호 라우팅 문제 다익스트라 알고리즘 최단경로 문제란 주어진 그래프에서 주어진 두 정점을 연결하는 가장 짧은 경로의 길이를 찾는 문제이다. 가중치가 없는 그래프의 최단 경로는 bfs를 이용해 찾을 수 있다. 최단 경로 문제에서 먼저 유의해야 할 점은 음수 가중치 간선의 존재 유무이다. 그래프에 음수 가중치를 갖는 간선이 존재하면 전체 경로의 길이가 짧아지게 된다. 다익스트라 알고리즘은 음수 가중치 간선이 없다는 가정 하에 동작하게 된다. 다익스트라 알고리즘은 bfs와 유사한 형태를 가진 알고리즘으로, 시작점에서 가까운 순서대로 정점을 발견해가는 방식이다. dfs에서는 큐의 정점의 번호를 넣었지만, 다익스트라에서는 정점의 번호와 함께 해당 정점까지의 최단 거리를 쌍으로 Min-heap 우선순위 큐에 저장하게 된다. 단, b.. 2021. 2. 19.
객체 지향 프로그래밍 - Why spring? 객체 지향 프로그래밍이란 - 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. - 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. - 객체지향 프로그래밍은 프로그램을 유연하고 변경을 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다. -> 컴포넌트를 쉽고 유연하게 변경하면서 개발할 수 있는 방법 객체 지향의 핵심 원리 1. 다형성 더보기 프로그램 언어의 다형성은 그 프로그래밍 언어의 자료형 체계의 성질을 나타내는 것으로, 프로그램 언어의 각 요소들이 다양한 자료형에 속하는 것이 허가되는 성질을 가리킨다. 다형성은 역할과 구현을 분리하는 것에서 출발한다. 자동차의 역할을 하는 인터페이스가 있다면 클라이.. 2021. 2. 17.
반응형