전체 글
-
데코레이터 패턴Java & 배경지식/패턴 2020. 2. 17. 20:40
public interface Car { public void assemble(); } public class BasicCar implements Car { @Override public void assemble() { System.out.print("Basic Car."); } } public class CarDecorator implements Car { protected Car car; public CarDecorator(Car c){ this.car=c; } @Override public void assemble() { this.car.assemble(); } } public class LuxuryCar extends CarDecorator { public LuxuryCar(Car c) { sup..
-
Strategy Pattern(전략패턴)Java & 배경지식/패턴 2020. 2. 13. 21:18
전략패턴이란? 자신의 기능 맥락(context)에서 필요에 따라 변경이 필요한 알고리즘을 인터페이스르 통해 통째로 외부로 분리시키고, 이를 구현한 구체적인 알고리즘 클래스를 필요에 따라 바꿔서 사용할 수 있게 하는 디자인 패턴. 쉽게말하면 다구현해 놓고 클라이언트가 필요에 의해서 필요한 것을 실행시키는 것 현 직장은 SI 그리고 R&D 중심의 회사다보니 중간에 요구사항 및 새로운 기능들이 추가되는 경우가 매우 많다. 그래서 핵심코드 관리를 잘하지 못하였으나 위의 전략패턴을 이용하게 된다면 핵심내용의 버전을 관리하거나 추가하기가 매우 편하다는 것을 느껴 아래와 같이 기본적인 뼈대를 만들었다. 위와같은 구조로 만들었다. 코드들 Controller @Controller public class HomeContr..
-
AOP - 트랜잭션Spring/Spring AOP 2020. 2. 12. 20:07
1. 메소드 분리 위 코드의 특징은 트랜잭션 경계설정의 코드와 비지니스 로직 코드 간에 서로 주고받는 정보가 없는 완벽하게 독립적인 코드 순수하게 사용자 레벨 업그레이드를 담당하는 비지니스 로직코드만 독립적인 메소드에 담겨있기 때문에 이해도 쉽고 수정도 부담이 없다.실수로 트랜잭션 코드를 건드릴 염려도 없어졌다. 위와같이 책에 적혀있는 메소드를 분리하는 로직을 직접 이해하고 사용해보니 회사에서 분리시켜야되는 메소드들이 생각나기 시작했다.... 내일 점심시간에 이 부분좀 수정해야겠다. 2. DI를 이용한 클래스의 분리 그림 1-2 구조는 2-1 그림과 같이 강한 결합도로 고정되어 있다. 그래서 위의 결합도를 약하게 만들기 위하여 UserSerice를 인터페이스로 만들고 기존 코드는 UserService인터..
-
spring IoC의 용어 정리Spring/Spring 기본 지식 2020. 2. 11. 20:53
1. 빈(Bean) 빈 또는 빈 오브젝트는 스프링이 IoC방식으로 관리하는 오브젝트(관리되는 오브젝트 - managed object) 스프링이 직접 그 생성과 제어를 담당하는 오트젝트만 빈이라고 부른다. 2. 빈 팩토리(bean factory) 스프링의 IoC를 담당하는 핵심 컨테이너를 가르킨다. 빈을 등록하고, 생성하고, 조회하고 돌려주고 그 외에 부가적인 빈을 관리하는 기능을 담당 빈팩토리를 바로 사용하지 않고 이를 확장한 애플리케이션 컨텍스트 이용 BeanFactory라로 붙여 쓰면 빈 팩토리가 구현하고 있는 가장 기본적인 인터페이스의 이름이 됨(getBean()과 같은 메소드 정의) 3. 애플리케이션 컨텍스트(Application context) 빈 팩토리를 확장한 IoC 컨테이너 빈을 등록하고 ..
-
Session Facade 패턴Java & 배경지식/패턴 2020. 2. 10. 17:00
Session Facade 패턴 소트프웨어 라이브러리를 쉽게 사용 및 피해할수 있게 해준다. 공통적인 작업에 대해 간편한 메소드들을 제공 퍼사드 라이브러리를 사용하는 코드들을 좀 더 읽기 쉽게 해준다. 라이브러리 바깥쪽의 코드가 라이브러리의 안쪽 코드에 의존하는 일을 감소시켜 준다. 대부분의 바깥쪽의 코드가 퍼사드를 이용하기 때문에 시스템을 개발하는데 있어 유연성이 향상 좋게 작성하지 않은 API의 집합을 하나의 좋게 작성되 API로 감싸준다. 위의 역활들을 한마디로 말하면 서브시스템 내부에 있는 클래스에 접근할 수 있는 하나의 통합된 인터페이스를 제공 아래 Java 코드 예제는 사용자(you)가 퍼사드(컴퓨터)를 통해 컴퓨터 내부의 부품(CPU, HDD) 등을 접근한다는 내용의 추상적인 예제이다. /*..
-
Transfer Object 패턴(Value Object)Java & 배경지식/패턴 2020. 2. 10. 15:21
Transfer Object 패턴(Value Object) 데이터를 전송하기 위한 패턴 실제 사용하는 VO 및 DTO를 칭하는 패턴 Serializable를 구현한이유는 구현함으로써 객체를 직렬화할 수 있기 때문이다 직렬화 : 서버 사이의 데이터 전송이 가능 원격지 서버에 데이터를 전송하거나 파일로 객체를 저장할 경우에는 이 인터페이스를 구현해야함 public class StudentVO Implements Serializable{ private String name; private int rollNo; public StudentVO(){ super(); } StudentVO(String name, int rollNo){ super(); this.name = name; this.rollNo = rollN..
-
Spring AOPSpring/Spring AOP 2020. 2. 9. 18:56
1. AOP(Aspect Oriented Programming)란? 관점지향 프로그래밍 AOP를 구현하는 다양한 방법이 존재하지만, 기본적인 개념은 아래 그림과 같이 공통 관심 사항 코드를 비즈니스 로직을 구현한 코드안에 삽입 자체적인 언어라기보다는 기존의 OOP언어를 보완하는 확장 흩어진 Aspect를 모듈화 할 수 있는 프로그래밍 기법 AOP의 구현체를 제공하며, 자바에 만들어 있는 AOP구현체(AspectJ)와 연동할 수 잇는 기능 제공 위의 내용을 기반으로 트랜잭션, 캐쉬 등 여러가지 기능이 제공되고 있다. 2. 사용 목적 인터넷 및 책에서 찾아보니까 ‘관심의 분리(Separation Of concerns)‘라고 나오는데 말이 어렵다. 그렇기 때문에 내뜻대로 정의해 보았다 핵심관점(업무로직 - 모..
-
2년 가까이 개발자를 하면서 생각나는 것들 이것저것 적음개인적인 생각들 및 근황 2020. 2. 9. 18:35
현 회사에서 내가 입사할 때 한 선배 개발자가 "코더가 되지말고 프로그래머가 되어라" 라는 말이 아직도 기억에 남는다. 그래서 코더가 되지 않기 위해 프로젝트를 하면서 내가 주도적으로 회의에 참여해 프로젝트의 방향을 연구원들과 같이 정하였으나 신기술이 아닌 같은 기술로 웹개발을 하는 나의 모습을 보면서 코더라는 생각이 들었다. 프로그램을 사용하는 것뿐만 아니라 사용법, 간단한 사용원리만 아는게 아니라 깊숙하게 들어가서 왜 만들어졌는지까지 공부를 해야겠다고 다짐하면서 블로그를 만들게 되었다. 개발자는 깃허브에 블러그를 이용해야지 하고 올해 1월부터 만들었으나.. 마크다운 언어로 만드는게 매우 힘들다는것을 느끼고 T스토리로 만들겠다.....(기존 것도 이관하면서) 어쨌든 2020년의 다짐이 오래되기를 기원하..