나는 제품에 관한 각각의 웹 페이지 목록을 가지고 있습니다.물건을 분류하는 디자인 패턴
if title =~ /pet/
13
elsif title =~ /therapy|SPA|massaging|salon|hotspring/
5
elsif title =~ /present|gift/
4
# and so on...
end
그래서 분류 문자열 키워드 검색하면됩니다 :/else 문은 다음과 같이 각 페이지를 분류 할 경우 이전 시스템에서 우리는을 사용했다. 이제 우리는 새로운 시스템을 만들고 있으므로 확장 성을위한 공간이 있는지 확인하고 싶습니다. 나는 각 classfication에 대해 별도의 클래스를 갖는 것이 너무 무거울 것이라고 생각했습니다.
그리고 나는 각각에 대해 더 좋은 방법이 있다고 생각합니다. gift?()
과 pet?()
이있는 것 같습니다. 그러나 나는 이것을 수행하는 것이 논리에서 무언가를 하드 코딩한다는 것을 의미한다고 생각한다. 이런 종류의 분류를하기위한 디자인 패턴이 있습니까?
감사합니다. 성능 측면에서 배열, 해시 및 선택 사례간에 큰 차이점이 있습니까? 또한 select-case/if 문에 lambda를 사용할 것인가? – lulalala
@lulalala : 성능은 항상 그렇듯이 실제 상황에 따라 다릅니다. 나는'case'가 가장 빠를 것이고 Array 버전이 Hash보다 약간 더 빠를 것이라고 생각한다. (그러나 벤치마킹 만이 알 수있다.) 당신은'case'와 함께 lambdas를 사용할 수 있습니다 만, 어쨌든 모든 정적 코드이므로 많은 점이 없습니다. Array/Hash 케이스에서 lambdas를 사용하는 것은 정적 논리를 해석 된 데이터로 바꾸고 람다 (lambdas)를 작은 덩어리의 코드를 데이터로 바꾸는 표준 방법이므로 의미가 있습니다. –