디자인 패턴은 도구입니다. 도구와 마찬가지로 도구를 사용하는 두 가지 방법이 있습니다. 올바른 방법과 잘못된 방법입니다. 내가 당신에게 드라이버와 못을,주고 함께 나무의 두 조각을 가입하도록 요구하는 경우 예를 들어, 당신은 해야 망치을 올려주세요. 손톱에는 망치가 사용되며 나사에는 나사가 사용됩니다.
너무 자주, 디자인 패턴은 하나의 진정한 방법으로 광고되며, 특정 문제가 발생할 때만 사실입니다. 주니어 개발자는 새로운 것을 가지고 놀 때 종종 아이들과 같습니다. 그들은 그 디자인 패턴을 모든 것에 적용하려고합니다 . 그리고 패턴 A가 문제 B에 적용되고 패턴 C가 문제 D에 적용된다는 것을 배우는 한, 본질적으로 잘못된 것은 없습니다. 손톱을 박는 데 드라이버를 사용하지 않는 것처럼, 당신은 손톱을 운전하지 않습니다. 존재하기 때문에 패턴; 패턴은 작업에 가장 적합한 도구로 사용됩니다.
패턴의 반대쪽은 안티 패턴입니다. 일반적으로 실행 시간 또는 메모리 측면에서 시간이 지나고 나쁘다는 것이 입증 된 것. 그러나 패턴과 반 패턴은 모두 왜 존재 하는지 이해하지 못하는 개발자에게는 좋지 않습니다. 개발자는 자신이하는 일이 새롭고 독창적이라고 생각하지만 대부분은 그렇지 않습니다. 이전에 생각한 것 같습니다. 그들 앞에있는 사람들은 경험 때문에 패턴을 만들었습니다.
물론, 주니어 개발자는 종종 새로운 방식으로 오래된 일을하는 것처럼 보이며 때로는 그러한 방식이 더 좋습니다. 그러나 너무 자주 Dunning-Kruger 효과가 발생합니다. 개발자는 기능적 프로그램을 만들기에 충분하다는 것을 알고 있지만 자신의 한계를 이해하지 못합니다. 이를 극복 할 수있는 유일한 방법은 긍정적이고 부정적인 경험을 통한 것 같습니다. 그들은 자신이 우수하다고 생각하기 때문에 패턴을 무시하지만 실제로 10,000 명의 개발자가 이미 특정 디자인을 사용한 다음 실제로 나쁘기 때문에 버렸다는 것을 모릅니다.
애자일은 진화하는 고객 요구에 신속하게 적응하는 것과 관련하여 "응답 적으로 작업 수행"을 선호합니다. 디자인 패턴을 선호하거나 멸시하지 않습니다. 패턴이 가장 빠르고 가장 안정적인 방법 인 경우 개발자는이를 사용해야합니다. 특정 패턴이 단순히 "완료"하는 것보다 더 많은 시간이 소요된다면 패턴이 아닌 것을 사용하는 것이 좋습니다 (물론 성능이 심각하게 저하되지 않는다고 가정). 알려진 패턴을 찾을 수 없으면 클라이언트에게 "아니오"라고 말하는 것보다 고유 한 패턴을 설계하는 것이 좋습니다. 클라이언트, 특히 지불하는 클라이언트는 일반적으로 옳습니다.
패턴이 길이라고 주장하거나 패턴이 존재의 독이라고 주장하는 사람은 모두 잘못입니다. 패턴은 특정 상황에 적용하기위한 도구이며 상황에 따라 다양한 수준의 성공을 거두고 있습니다. 이것은 진실이며, MVC를 선택했는지 여부, 데이터 전송 객체 사용 여부 등에 의존하지 않는 것입니다. 중요한 것은 코드를 합리적으로 짧은 시간 내에 구현하는 것입니다. 논리적 인 버그가 없다.
일반적 으로 패턴은 일관된 형태의 디자인을 허용하며 100 % 독창적 인 아이디어를 작성하기 위해 모든 패턴을 무시하는 것보다 성능이 우수하지만 모든 패턴을 피할 수는 없습니다. 예를 들어, y = x + 5 인 경우, 실제로 x + 5를 쓰는 패턴을 피하기 위해 y = x + (5 * 3 + 15/3) / 4를 쓰시겠습니까? 아뇨 y = x + 5를 작성하고 다음 문제로 넘어갑니다.
사람들은 매일 패턴을 사용 하지만 괜찮습니다 . 가장 중요한 것은 논리적으로 작동하고 거의 충돌하지 않으며 사용하기 쉬운 코드를 사용하는 것입니다. 그 이상은 중요하지 않습니다.