안녕하세요 저는 다음과 같은 간단한 설명으로 앱을 작성해야합니다.배열 컬렉션을 적절하게 캡슐화하십시오.
프로모션 규칙에 따라 가격을 계산하는 인터페이스를 구현합니다.
co = Checkout.new(promotional_rules)
co.scan(item)
co.scan(item)
price = co.total
기본적으로 설정 한 홍보 규칙에 따라 특정 항목이 그에 따라 할인됩니다. 나쁜 OO
내가 처음에 규칙의 배열을 포함하는 promotional_rules 객체를 생성 -
은 내가 promotional_rules의 그룹을 캡슐화하고 어쨌든 배열로 규칙을 노출했다고 진술 내 코드에 대한 몇 가지 코멘트를 공유했습니다.def initialize
@rules = []
end
def addrule(rule)
@rules.push(rule)
end
그런 다음 내 체크 아웃 개체에는 setup 및 초기화 프로그램으로 전달 된 promotional_rules 개체가 있습니다. promotional_rules 객체에 포함 된 규칙 배열을 반복하고 체크 아웃 객체가 스캔 한 항목에 적용합니다.
def initialize(promotionalrules=Promotionalrules.new)
@promotionalrules = promotionalrules
end
....Other code
for rule in @promotionalrules.getrules
for item in @items
##Execute rule on current item.
end
end
하지 너무 행복 내 코드 임 ...하여 루프 등으로 루프하지만은 임 내가 잘못 갈 경우 확실하지 캡슐화 도움을 찾고 있어요.
브리핑에 적용 할 좋은 디자인 패턴에 대한 제안은 내가 취한 접근 방식에 대해 너무 확신하지 않는 한 유익 할 것입니다. 감사합니다
정말 좋아, 지금 그들이 무엇을 의미하는지 알 수 있습니다. 내 규칙과 항목이 상호 작용하는 방식에 대해 생각하고 있다면 개선 할 수 있을지는 모르겠지만 또 다른 질문 일 수도 있습니다. 어쨌든, 지금, PromotionalRules 객체의 규칙 객체 배열을 반복하여 각 항목에 적절하게 적용합니다. – namtax
@namax : 규칙에 따라 전체 항목 목록을 규칙 집합에 넘겨주는 것이 좋습니다 그리고 규칙 세트가 항목을 반복하게하면 "1의 가격에 2"와 같은 것을 쉽게 처리 할 수 있습니다. –
참. 규칙을 반복하는 것처럼 중첩 된 루프가 포함되지만 해당 루프 내의 항목을 반복합니다. – namtax