본문 바로가기
프로그래밍 놀이터/디자인 패턴, 리펙토링

[Effective Java] 전략을 표현할 때 함수 객체를 사용하자.

by 돼지왕 왕돼지 2016. 11. 15.
반응형

 [Effective Java] 전략을 표현할 때 함수 객체를 사용하자.


class instance, comparator interface, concrete strategy, Effective JAVA, function object, private static, private static member class, public static final field, Singleton, static final, strategy pattern, [Effective Java] 전략을 표현할 때 함수 객체를 사용하자., 객체 참조, 구체 전략, 다른 객체, 메소드, 메소드 포인터, 메소드 하나 클래스, 반복, 상태, 유사한 효과, 익명 클래스, 인스턴스, 인스턴스 생성, 인터페이스, 전략, 전략 패턴, 정의, 하나, 함수 객체, 함수 포인터


-
자바는 함수 포인터를 제공하지 않는다. 대신 객체 참조를 사용해서 유사한 효과를얻을 수 있다.
호출된 객체의 메소드에서 다른 객체(메소드로 전달되는)의 메소드를 수행하도록 객체를 정의하는 것이 가능하다.
그런 메소드 하나만 달랑 외부에 제공하는 클래스의 인스턴스는 사실상 메소드 포인터의 역할을 한다.
그런 인스턴스를 함수 객체(function object)라고 한다.

ex) Comparator Interface 를 상속한 Class instance.


-
좋은 함수 객체는 상태가 없어 static final, singleton 으로 사용 가능한 녀석이다.



Summary


함수 포인터의 주 용도는 전략(strategy) 패턴을 구현하는 것.
자바에서 이 패턴을 구현하려면 전략을 나타내는 인터페이스를 선언하고, 그 인터페이스를 구현하는 구체 전략(concrete strategy)을 정의한다.
구체 전략이 단 한번만 사용될 때는 그것을 익명 클래스로 선언하고 인스턴스를 생성하는 것이 일반적.
반복적으로 사용하기 위해 설계된 구체 전략의 경우는 일반적으로 private static 맴버 클래스로 구현한 후, public static final 필드를 사용해서 외부에 제공한다.





반응형

댓글