2009-06-15 4 views

답변

5

람다를 가지고 있다면 "디자인"패턴의 절반을 전혀 필요로하지 않습니다.

공장? 이것은 새로운 객체를 반환하는 함수입니다. 방문객? 이런! 명령? 익명 기능. 통역사? 문자열 등을 취하는 함수. 병법? 그것은 기능입니다!

그건 그냥 lambdas, 함수 및 클로저입니다. 당신이 명령 패턴을 사용하는 것이 어디

The problem is, about 1/3 to 1/2 of them were basically cover-ups for deficiencies in C++ that don't exist in other languages. Although I'm not a huge Perl fan anymore, I have to admit the Perl community caught on to this first (or at least funniest). They pointed out that many of these so-called patterns were actually an implementation of Functional Programming in C++.

는 그래서 그래, 당신은 (다른 이름 또는) 기능을 익명을 사용할 수 있습니다.

+0

람다와 익명 함수의 차이점은 무엇입니까? – Iain

+0

그들은 동의어입니다. – alamar

+0

아니요, 약간의 차이가 있습니다. http://blogs.msdn.com/ericlippert/archive/2007/01/10/lambda-expressions-vs-anonymous-methods-part-one.aspx –

0

함수가 명령의 세부 정보를 실제로 캡슐화 할 수 없다는 점을 근거로 아니오라고 말하고 익명으로 호출자와 호출 수신자가 어떻게 표현하는지 이해할 수 있습니까?

(Copymand 패턴의 GoF 설명은 기능적 기반 implenetation을 제외하고 캡슐화를 수행하는 객체의 사용을 구체적으로 설명합니다.

+0

더 자세히 설명 할 수 있습니까? 캡슐화 할 수없는 세부 정보 – Iain

2

명령에서 하나의 작업 만 지원하는 경우 익명 기능을 안전하게 사용할 수 있습니다.

그러나 각 명령에 대해 둘 이상의 작업을 수행하는 경우는 드뭅니다. 예 : 실행 취소/다시 처리를위한 DoCommand/UndoCommand. 또는 CanExecuteCommand/ExecuteCommand를 사용하여 명령의 UI 기능을 활성화/비활성화 할 수 있습니다. 또는 GetLocalizedCommandName과 같은 것입니다. 이러한 경우 (예 : 익명 함수 튜플 대신) 인터페이스를 사용합니다.

관련 문제