Decoration Pattern이란?
객체에 추가 요소를 동적으로 더할 수 있다. 데코레이터를 사용하면 서브 클래스를 만드는 경우에 비해 훨씬 유연하게 기능을 확장할 수 있다.
아래는 Beverage 클래스, CondimentDecorator 추상 데코레이터와 이를 상속받은 Soy, Whip, Mocha 및 SteamMilk 데코레이터를 보여준다. StarbuzzCoffee 클래스에서 이들을 연동한다.
Decoration Pattern이란?
객체에 추가 요소를 동적으로 더할 수 있다. 데코레이터를 사용하면 서브 클래스를 만드는 경우에 비해 훨씬 유연하게 기능을 확장할 수 있다.
아래는 Beverage 클래스, CondimentDecorator 추상 데코레이터와 이를 상속받은 Soy, Whip, Mocha 및 SteamMilk 데코레이터를 보여준다. StarbuzzCoffee 클래스에서 이들을 연동한다.
Observer Pattern이란?
한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들한테 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다(one-to-many) 의존성을 정의
아래는 WeatherData가 Subject 객체이며 CurrentConditionDisplay 및 HeatIndexDisplay가 Observer 객체이다. Display 방식도 변화할 수 있기 때문에 Interface로 뺐다. WeatherStation 클래스에서 Subejct 및 Observer 객체를 연동한다.
Strategy Pattern이란?
알고리즘군을 정의하고 각각을 캡슐화하여 교환해서 사용할 수 있도록 한다. 스트래티지를 활용하면 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경할 수 있다.
아래는 Duck 클라이언트가 캡슐화된 FlyBehavior와 QuackBehavior 알고리즘군을 갖는 클래스 다이어그램이다.
Kepler에선 JAVA8을 적용하기 위해 패치가 필요하다.
아래 링크에 패치하는 방법이 설명되어 있다.
JDT/Eclipse Java 8 Support For Kepler
잘 적용되었는지 Java8 부터 지원하는 람다식(Lambda Expression)을 포함한 코드로 테스트해봅시다.
import java.util.Arrays; import java.util.List; public class Test { public static void main(String[] args) { // TODO Auto-generated method stub Listlist = Arrays.asList ( "Groovy", "Java", "Scala"); list.sort((s1, s2) -> s1.length() - s2.length()); list.forEach(s -> System.out.println (s)); } }
libcurl을 검색한 후에 'Download libcurl.dll (all versions) only' 링크를 통해 dll만 다운 받아서 SSL 폴더 내의 dll을 C:\Windows\SysWOW64 폴더에 복사
액티비티 다이어그램, 시퀀스 다이어그램이 무엇인지 잘 알고 사용하면 유용하겠다.
회사에서 SW하는 많은 사람들이 다이어그램을 그리지만 100% 제대로 알고 그리는 사람은 거의 없는 듯.
아래는 다이어그램에 대해 잘 설명된 페이지.