본문 바로가기

언어/JAVA97

Adapter pattern 어뎁터 패턴은 실생활에서는 110v를 220v로 변경해주거나, 그 반대로 해주는 흔히 돼지코 라고 불리는 변환기를 예로 들 수 있다. 호환성이 없는 기존 클래스의 인터페이스를 변환하여 재사용 할 수 있도록 한다. SOLID중에서 개방폐쇄 원칙 (OCP)를 따른다. package com.company.design.adapter; public interface Electronic110v { void powerOn(); } package com.company.design.adapter; public interface Electronic220v { void connect(); } package com.company.design.adapter; public class SocketAdapter implements .. 2021. 6. 6.
POJO JAVA POJO JAVA POJO(Plain Old Java Object) 순수한 자바 오브젝트를 뜻한다. POJO 특징 1. 특정 규약에 종속 되지 않는다. 특정 Library, Module에서 정의된 클래스를 상속 받아서 구현하지 않아도 된다. POJO가 되기 위해서는 외부의 의존성을 두지 않고, 순수한 JAVA로 구성이 가능해야 한다. 2. 특정 환경에 종속되지 않는다. 만일 특정 비즈니스 로직을 처리 하는 부분에 외부 종속적인 http request, session 등 POJO를 위배한 것으로 간주한다. 또한 많이 사용하고는 있지만 @Annotation 기반으로 설정하는 부분도 엄연히는 POJO라고 볼 수는 없다. 2021. 6. 6.
객체지향 설계 5원칙 SOLID 응집도와 결합도 좋은 소프트웨서 설계를 위해서는 결합도(coupling)는 낮추고 응집도(cohesion)는 높여야 한다. 결합도 모듈(클래스)간의 상호 의존 정도를 나타내는 지표로서 결합도가 낮으면 모듈간의 상호 의존성이 줄어들어서 객체의 재사용 및 유지보수가 유리하다. 응집도 하나의 모듈 내부에 존재하는 구성 요소들의 기능적 관련성으로 응집도가 높은 모듈은 하나의 책임에 집중하고 독립성이 높아져, 재사용 및 유지보수가 용이하다. OCP (Open Closed Principle) 개방 폐쇄 원칙 자신의 확장에는 열려 있고, 주변의 변화에 대해서는 닫혀 있어야 한다. 상위 클래스 또는 인터페이스를 중간에 둠으로써, 자신은 변화에 대해서는 폐쇄적이지만, 인터페이스는 외부의 변화에 대해서 확장을 개방해 줄 .. 2021. 6. 6.
알고리즘 7 피보나치 수열 문제 여러 방식으로 해결하기 피보나치 수열: n번째 숫자와 n1번째 숫자를 더한 값이 n2번째 숫자로 나타내는 수열 재귀함수로 풀이 public int fibonacciRecur(int n) { if (n == 0) return 0; if (n == 1) return 1; return fibonacciRecur(n - 1) + fibonacciRecur(n - 2); } 반복문으로 풀이 public int fibonacciIter(int n) { int ppre = 0; int pre = 1; int current = 0; if (n == 0) return 0; if (n == 1) return 1; for (int i = 2; i 2021. 5. 30.
알고리즘 6 미로 찾기 문제 입구에서 출구로 통하는 길을 찾는 미로 찾기 문제 스택을 활용하여 문제를 해결할 수 있음 출구 탐색을 위해 BFS나 DFS로 해결할 수 있음 아래 그림에서 Enter 에서 Exit을 찾아가는 path의 좌표를 출력하세요 움직 일 수 있는 방향의 예: [2,2] 위치에서 볼 수 있는 도달 가능 위치는 N(2,1), E(3,2), S(2,3), W(1,2) 하나의 위치를 방문할 때마다 stack에 위치를 저장한다.(push) 저장된 위치에서 더 이상 갈 곳이 없는 경우 되돌아 간다. (pop) stack에서 꺼낸 위치에서 가지 않은 곳을 찾아 간다. 미로 정의 package algorism.ch06; public class Maze { public int[][] myMaze ={ {0, 1,.. 2021. 5. 30.
알고리즘 5 최단거리 구하기 모든 노드 중 연결된 최단거리를 가진 노드를 찾는다. 노드 v에 인젒한 노드 w에 대해 다음 조건이 성립하면 w에 대한 최단 거리를 업데이트 한다. (즉 원래 w로 가던 거리보다 v를 거쳐 가는 거리가 더 가까우면 w로 가는 거리는 v를 거쳐가는 것으로 최단 거리를 수정) Yw = Yv + Cvw if Yv + Cvw < Yw package algorism.ch05; class MyGraph{ private int count; //노드 수 private int[][] vertexMatrix; // matrix로 그래프 표시 private int[] distance; // 특정 노드에 대한 각 노드의 최단 거리 private boolean[] visited; // alread visited.. 2021. 5. 30.