본문 바로가기

Programinng

loading workbench eclipse 멈출때 .snap 파일을 삭제한다. [Workspace Directory]/.metadata/.plugins/org.eclipse.core.resources/.snap 더보기
이클립스 svn 설치 https://subclipse.tigris.org/update_1.6.x/ 더보기
객체지향 원리 변하는 것을 캡슐화하라. 구현에 의존하기 보다는 인터페이스에 의존 하도록 코딩하라. 각 클래스는 변경 요인이 오직 하나이어야 한다. 클래스는 행동과 기능에 관한 것이다. 더보기
자바(Java) - Factory Pattern 팩토리 패턴 Object를 생성할때 new라는 키워드를 쓰는것은 좋지 못하다. 이는 interface가 아니라 Concrete class를 의존하여 코딩을 하기 때문에 결합도가 매우 높다. 그렇기 때문에 나중에 코드를 수정해야 할 가능성이 높아지고, 유연성이 떨어진다. 이를 Factory Pattern을 사용하여 결합도를 느슨하게 만들 필요가 있다. Factory는 공장이라는 뜻으로 Object를 생성하는 공장이다. 실제 사용하는 곳에서 Concrete class를 정하지 않고 Factory를 사용하여 의존성을 받기 때문에 Concrete class를 전혀 의존하지 않는다. 우리는 이런 Factory를 통해 DIP(Dependency Inversion Principle, 의존성 뒤집기 원칙)을 실현 시킬 수 있다. .. 더보기
자바(Java) - Strategy Pattern 스트래티지 패턴 Strategy Pattern(전략 패턴)은 Design Pattern에서 가장 많이 사용되는 패턴 중 하나 이며, OCP(Open-Closed Principle)을 잘 실현하고 있다. Strategy Pattern은 알고리즘을 Encapsulation하여 각각 정의하고, 이를 교체해서 같은 문제를 다른 방법으로 사용한다. 이렇게 함으로 실제 사용하는 클라이언트와는 독릭접으로 구현될 수 있다. 다음 예제를 보자. 이해를 돕기 위해 최대한 심플하게 구현하겠다. Character 인터페이스는 공격의 기본적인 스펙을 정의하며, 이를 구현하게 될 클래스는 Warrior와 Wizard가 되겠다. 또 이들이 사용하게 될 무기는 Weapon 인터페이스를 구현한다.public interface Character { p.. 더보기
자바(Java) - Template Method Pattern 템플릿 메소드 패턴 템플릿 메소드 패턴이란, 알고리즘의 뼈대를 정의하고 그 알고리즘의 여러 단계 중 일부를 이를 Subclassing한 Subclass에서 재정의 할 수 있다. 라면을 끓이는 동작 한 번 정의해 보자. 1. 냄비를 올린다.2. 물이 끓는다.3. 라면을 조리한다.4. 그릇에 담는다. 1,2,4은 모든 라면의 조리 방법이 같다. 하지만 3번은 너구리 라면을 넣는 다던지 삼양라면을 넣는 다던지 다르게 정의하겠다. 일단, 공통적인 알고리즘을 Abstract class로 정의하고, Subclass에서 재정의 해서 사용할 method는 abstract method로 정의한다.public abstract class Ramen { public void make(){ preparePot(); boilWater(); cook.. 더보기
Thinking in Patterns with Java 자바로 작성된 디자인 패턴 PDF 자료 http://www.cs.huji.ac.il/~noam/intro2cs2001/www/TIPatterns.pdf 더보기
자바(Java) - Builder Pattern 빌더 패턴 Builder Pattern은 생성자 패턴 중 하나이다. 흔히 우리가 사용하고 있는 생성자 패턴에는 Telescoping Pattern, JavaBeans Parttern이 있다.텔리스코핑 패턴은 생성자 오버로딩(Overloading)을 말하며, 자바빈즈 패턴은 getter, setter 메소드를 이용한 필드값 초기화 방법이다. 텔리스코핑 패턴은 파라미터가 많을 경우 코드의 작성이 어려움이 있고, 가독성도 떨어진다. (파라미터는 없는게 최고로 좋고, 1개는 good, 2개는 not bad, 3개가 넘어가면 쓰레기 코드다.) 물론 예외도 있다. Point(x, y) 이런 경우는 적절하다.인수가 2~3개가 필요하다면 다음가 괕이 일부를 독자적인 클래스를 만들어서 사용한다.Circle.make(double x.. 더보기
자바(Java) - Singleton Pattern , 싱글턴 패턴 싱글턴 패턴이란, 인스턴스를 하나만 만들어 사용하기 위한 패턴이다. 예를 들면 스레드 풀, 디바이스 설정 객체 등과 같은 인스턴스를 여러개 만든다면, 불필요한 자원을 사용하게 되고, 또 프로그램이 예상치 못한 결과를 낳을 수 있다. 싱글턴 패턴은 오직 인스턴스를 하나만 만들고 그것을 계속해서 재사용한다. Singleton이라는 클래스를 하나 생성하겠다.public class Singleton { private Singleton() { } }우선 가장 먼저 해야 할것은 생성자를 private으로 만드는 것이다.이렇게 하므로써, 프로그래머가 실수로 new를 사용하여, 또 다른 인스턴스를 생성하는 일을 막을 수 있다. public class Singleton { private static final Singl.. 더보기
자바(Java) - Integer에서 -128~127이 == 동일(HashCode) 비교가 true인 경우 다음을 테스트 해보자 Integer a = -128; Integer b = -128; System.out.println(a == b); Integer c = 127; Integer d = 127; System.out.println(c == d); Integer e = new Integer(-127); Integer f = new Integer(-127); System.out.println(e == f); Integer g = new Integer(128); Integer h = new Integer(128); System.out.println(g == h); - 결과truetruefalsefalse new라는 키워드를 사용하지 않고 -128~127은 헤쉬코드 비교를 했을때 true가 나온다.그 이유는 저.. 더보기