전체 글 890

JAVA 자바 팩터리 메서드 패턴(Factory Method Pattern)

안녕하세요 알통몬입니다.공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!포스팅 내용이 찾아주신 분들께 도움이 되길 바라며더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^ 객체 지향에서 팩터리는 객체를 생성해요. 따라서 팩터리 메서드는 객체를 생성 반환하는 메서드입니다. 여기에 패턴이 붙으면 하위 클래스에서 팩터리 메서드를 오버라이딩해서 객체를 반환하게 하는 것을 의미합니다. 이전 포스팅에서 강아지,고양이와 노는 코드를 작성해봤었죠?여기서 좀 더해서 볼트와 키티가 각자 가지고 놀고 싶어하는 장난감을 가져온다고 해보면,볼트는 강아지 장난감을, 키티는 고양이 장난감을 가져오겠죠? 바로 예제로 보겠습니다. 예제0)package factoryMethodPattern; public abstract clas..

개발 etc 2017.03.12

JAVA 자바 템플릿 메서드 패턴(Template Method Pattern)

안녕하세요 알통몬입니다.공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!포스팅 내용이 찾아주신 분들께 도움이 되길 바라며더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^ 볼트라고 하는 강아지와 키티라는 이름의 고양이를 키운다고 가정해보면, 볼트,키티와 함께 노는 시간을 보내는 세계를 프로그램으로 표현한다면 아래 2개의 예제와 같이 2개의 클래스가 필요하겠죠? 예제1)public class Dog { public void playWithOwner() { System.out.println("귀염둥이 이리온..."); System.out.println("야옹~ 야옹~"); System.out.println("꼬리 살랑 살랑~"); System.out.println("잘했어"); }} 예제2)publi..

개발 etc 2017.03.12

JAVA 자바 싱글턴 패턴(Singleton Pattern)

안녕하세요 알통몬입니다.공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!포스팅 내용이 찾아주신 분들께 도움이 되길 바라며더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^ 싱글턴 패턴이란 인스턴스를 하나만 만들어 사용하기 위한 패턴이에요.커넥션 풀, 스레드 풀, 디바이스 설정 객체 등과 같은 경우에 인스턴스를 여러개 만들게 되면불필요한 자원을 사용하게 되고, 또 프로그램이 예상치 못한 결과를 낳을 수 있다고 해요.싱글턴 패턴은 오직 하나의 인스턴스만 생성해 그것을 계속 재사용합니다.싱글턴 패턴을 적용하면 의미상의 두 개의 객체가 존재할 수 없어요.따라서 아래 세가지 조건이 반드시 필요해요. -new를 실행할 수 없도록 생성자에 private 접근 제어자를 지정한다.-유일한 단일 객체를 반환할 수 ..

개발 etc 2017.03.12

JAVA 자바 데코레이터 패턴(Decorator Pattern)

안녕하세요 알통몬입니다.공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!포스팅 내용이 찾아주신 분들께 도움이 되길 바라며더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^ 데코레이터 패턴은 프록시 패턴과 구현 방법이 같아요. 단지 프록시 패턴은 클라이언트가 최종적으로 돌려받는 반환값을 조작하지 않고 그대로 전달하지만, 데코레이터 패턴은 클라이언트가 받는 반환값에 장식을 덧입힙니다. 바로 예제를 통해 데코레이터 패턴을 적용한 코드를 보겠습니다. 예제)IService.javapackage decoratorPattern; public interface IService { public abstract String runSomething();} Service.javapackage decoratorPatte..

개발 etc 2017.03.12

JAVA 자바 프록시 패턴(Proxy Pattern)

안녕하세요 알통몬입니다.공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!포스팅 내용이 찾아주신 분들께 도움이 되길 바라며더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^ 프록시는 대리자라는 뜻입니다. 먼저 프록시 패턴을 적용하지 않은 패턴을 예제로 보겠습니다. 예제)Service.javapackage proxyPattern; public class Service { public String runSomething() { return "서비스 짱!!!"; }} ClientWithNoProxy.javapackage proxyPattern; public class ClientWithNoProxy { public static void main(String[] args) { // 프록시를 이용하지 않은 ..

개발 etc 2017.03.12

JAVA 자바 어댑터 패턴(Adapter Pattern)

안녕하세요 알통몬입니다.공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!포스팅 내용이 찾아주신 분들께 도움이 되길 바라며더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^ 어댑터 패턴은 OCP 개방폐쇄원칙을 활용한 설계 패턴입니다. 먼저 어댑터 패턴이 활용되지 않은 예제입니다. 예제)ServiceA.javapackage adapterPattern; public class ServiceA { void runServiceA() { System.out.println("ServiceA"); }} ServiceB.javapackage adapterPattern; public class ServiceB { void runServiceB() { System.out.println("ServiceB"); }} C..

개발 etc 2017.03.12

JAVA 자바 디자인 패턴

안녕하세요 알통몬입니다.공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!포스팅 내용이 찾아주신 분들께 도움이 되길 바라며더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^ 먼저 요리와 객체 지향 프로그래밍 (OOP)를 비교해보면 - 요리도구 4대원칙(캡상추다) - 요리도구 사용법 설계원칙(SOLID) - 레시피 디자인 패턴이렇게 대입해볼 수 있습니다. 디자인 패턴은 실제 개발 현장에서 비즈니스 요구 사항을 프로그래밍으로 처리하면서 만들어진 다양한 해결책 중에 많은 사람들이 인정한 베스트 프랙티스를 정리한 것이에요.디자인 패턴은 당연히 객체 지향 특성과 설계 원칙을 기반으로 구현되어 있어요. 스프링이란 : 자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크 디자인 패턴은 ..

개발 etc 2017.03.12

JAVA 자바 객체 지향 설계 5원칙 SOLID(5) - DIP 의존 역전 원칙

안녕하세요 알통몬입니다.공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!포스팅 내용이 찾아주신 분들께 도움이 되길 바라며더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^ "고차원 모듈은 저차원 모듈에 의존하면 안된다. 이 두 모듈은 모두 다른 추상화된 것에 의존해야 한다.""추상화된 것은 구체적인 것에 의존하면 안 된다. 구체적인 것이 추상화된 것에 의존해야 한다.""자주 변경되는 구체 클래스에 의존하지 마라" -로버트 C.마틴 자동차와 스노우 타이어 사이에는 위 그림처럼 의존관계가 있어요. 자동차가 스노우타이어에 의존하하죠. 그런데 자동차는 한 번 사면 오래도록 타야하는데 스노우 타이어는 겨울이 지나면 일반타이어로 교체해야 하죠. 이런 경우 자동차 클래스가 자주 변경되는 구체 클래스(스노우타이..

개발 etc 2017.03.12

JAVA 자바 객체 지향 설계 5원칙 SOLID ISP 인터페이스 분리 원칙

안녕하세요 알통몬입니다.공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!포스팅 내용이 찾아주신 분들께 도움이 되길 바라며더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^ 인터페이스 분리 원칙이란 클라이언트는 자신이 사용하지 않는 메서드에 의존 관계를 맺으면 안된다는 것입니다.SRP 단일 책임 원칙에서는 남자 클래스를 토막내서 하나의 역할(책임)만 하는 다수의 클래스로 분할 했었는데요.http://blog.naver.com/rain483/220502568265 인터페이스 분할 원칙을 적용할 수도 있습니다. 결론 적으로 단일 책임 원칙과 인터페이스 분할 원칙은 같은 문제에 대한 두 가지 다른 해결방법이라고 볼 수 있습니다.그러나 특별한 경우가 아니라면 단일 책임 원칙을 적용하는 것이 더 좋은 해결방..

개발 etc 2017.03.12

JAVA 자바 객체 지향 설계 5원칙 SOLID LSP 리스코프 치환 원칙

안녕하세요 알통몬입니다.공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!포스팅 내용이 찾아주신 분들께 도움이 되길 바라며더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^ 리스코프 치환 원칙이란 서브 타입은 언제나 자신의 기반 타입으로 교체할 수 있어야 한다는 것입니다. 객체 지향의 상속은 다음의 조건을 만족해야 합니다. 하위클래스 is a kind of 상위클래스 - 하위 분류는 상위 분류의 한 종류다.구현 클래스 is able to 인터페이스 - 구현 분류는 인터페이스 할 수 있어야 한다. 위 두 개의 문장대로 구현된 프로그램이면 이미 리스코프 치환 원칙을 잘 지키고 있다고 할 수 있어요. 이 그림과 같이 계층도/조직도는 리스코프 치환 원칙을 위반한 사례이고, 이 그림과 같이 분류도는 리스코프..

개발 etc 2017.03.12