[Design Pattern] 반복자 패턴(Iterator Pattern)과 컴포지트 패턴(Composite Pattern)
·
Computer Science/Design Pattern
"헤드 퍼스트 디자인 패턴(개정판)"을 읽고 정리한 내용입니다.9. 컬렉션 잘 관리하기반복자 패턴 반복자 패턴(Iterator Pattern)은 객체의 구현을 노출하는 것 없이 객체의 모든 요소들을 순차적으로 접근하는 방법을 제공한다.  디자인 원칙애플리케이션에서 달라지는 부분을 식별하고 불변으로부터 그것들을 분리해라. (Identify the aspects of your application that vary and separate them from what stays the same.)달라지는 부분을 찾아서 나머지 코드에 영향을 주지 않도록 캡슐화(encapsulate)한다. 그러면 나중에 바뀌지 않는 부분에는 영향을 미치지 않고 그 부분만 고치거나 확장할 수 있다.구현이 아니라 인터페이스에 프로그래..
[Design Pattern] 템플릿 메소드 패턴(Template Method Pattern)
·
Computer Science/Design Pattern
"헤드 퍼스트 디자인 패턴(개정판)"을 읽고 정리한 내용입니다.8. 알고리즘 캡슐화하기템플릿 메소드 패턴 템플릿 메소드 패턴(Template Method Pattern)은 메소드에서 알고리즘의 뼈대를 정의하고, 서브클래스에게 알고리즘의 몇몇 단계를 맡긴다. 템플릿 메소드 패턴은 알고리즘의 구조를 변경하는 것 없이 알고리즘의 특정 단계를 서브클래스가 재정의하도록 한다. 디자인 원칙애플리케이션에서 달라지는 부분을 식별하고 불변으로부터 그것들을 분리해라. (Identify the aspects of your application that vary and separate them from what stays the same.)달라지는 부분을 찾아서 나머지 코드에 영향을 주지 않도록 캡슐화(encapsulate)..
[JAVA] 그래프 구현하기 (인접 리스트, 인접 행렬)
·
Algorithm & Data Structure
그래프 그래프는 정점(Vertex, Node)과 간선(Edge)으로 이루어진 데이터 구조이다. 그래프의 종류무방향 그래프(Undirected Graph)간선에 방향이 없는 그래프로, 두 정점 사이의 연결이 쌍방향으로 되어있다.방향 그래프(Directed Graph)간선에 방향이 있는 그래프로, 한 정점에서 다른 정점으로의 방향이 정해져 있다.비가중치 그래프(Unweighted Graph)간선에 가중치(비용, 거리 등)가 없는 그래프이다.가중치 그래프(Weighted Graph)간선에 가중치가 할당된 그래프이다.이 외에도 순환 그래프(Cyclic Graph), 비순환 그래프(Acyclic Graph) 등이 존재한다. 인접 행렬(Adjacency Matrix) 인접 행렬은 각 정점들이 연결되어 있는 정보를 ..
백준 11725 트리의 부모 찾기(JAVA)
·
PS(Problem Solving)/JAVA
문제 설명https://www.acmicpc.net/problem/11725 풀이과정 DFS, BFS의 인접 행렬, 인접 리스트 방식으로 해결할 수 있다. 정답코드import java.io.*;import java.util.*;public class Main { static int N; static List> tree; static boolean[] visited; static int[] parent; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); Buffered..
[Network] 애플리케이션 계층
·
Computer Science/Network
"컴퓨터 네트워킹 : 하향식 접근(제7판)"을 읽고 정리한 내용입니다.2.1 네트워크 애플리케이션의 원리2.1.1 네트워크 애플리케이션 구조애플리케이션 구조 2가지클라이언트-서버(Client-server) 구조P2P(peer-to-peer) 구조클라이언트-서버 구조서버항상 켜져있는 호스트이다.고정 IP 주소를 갖는다.데이터 센터가 사용되기도 한다.클라이언트서버와 통신한다.클라이언트끼리 직접적으로 통신하지 않는다.유동적인 IP 주소를 가질 수 있다.P2P 구조서버가 항상 켜져있지 않는다.피어(Peer)라는 임의의 종단 시스템과 직접적으로 통신한다.피어는 다른 피어에게 서비스를 요청하고, 다른 피어에게 서비스를 제공한다. (즉, 자체 확장성(Self scalability)을 갖는다.)피어는 간혈적으로 연결되..
[Design Pattern] 어탭터 패턴(Adapter Pattern), 퍼사드 패턴(Facade Pattern)
·
Computer Science/Design Pattern
"헤드 퍼스트 디자인 패턴(개정판)"을 읽고 정리한 내용입니다.7. 적응시키기어탭터 패턴 어탭터 패턴(Adapter Pattern)은 클래스의 인터페이스를 클라이언트가 요구하는 다른 인터페이스로 변환한다. 어댑터 패턴을 사용하면 호환되지 않아서 함께 사용할 수 없었던 클래스를 작동할 수 있게 해준다. 어댑터 패턴 예시public interface Duck { public void quack(); public void fly();}public class MallardDuck implements Duck { @Override public void quack() { System.out.println("꽥꽥"); } @Override public void fly..
[Design Pattern] 커맨드 패턴(Command Pattern)
·
Computer Science/Design Pattern
"헤드 퍼스트 디자인 패턴(개정판)"을 읽고 정리한 내용입니다.6. 호출 캡슐화하기커맨드 패턴 커맨드 패턴(Command Pattern)은 요청을 객체로 캡슐화하여 다른 객체들을 다양한 요청에 따라 매개변수화 할 수있고, 요청을 큐에 넣거나 로그를 남기며, 실행 취소가 가능한 작업을 지원할 수 있게 한다. 예시public interface Command { public void execute(); public void undo();}public class NoCommand implements Command { public void execute() { } public void undo() { }}public class Light { String location; public Light(Stri..
[Design Pattern] 싱글턴 패턴(Singleton Pattern)
·
Computer Science/Design Pattern
"헤드 퍼스트 디자인 패턴(개정판)"을 읽고 정리한 내용입니다.5. 하나뿐인 특별한 객체 만들기싱글턴 패턴 싱글턴 패턴(Singleton Pattern)은 클래스 인스턴스가 오직 1개만 있음을 보장하고, 그 인스턴스로의 전역 접근을 제공한다. 멀티스레딩 문제 해결하기public class Singleton { private static Singleton uniqueInstance; private Singleton() {} public static Singleton getInstance() { if (uniqueInstance == null) { uniqueInstance = new Singleton(); } ..