You have that kind of information on entity course, haven't you? After you 
evaluate the conditions, if the result is true (that's means the conditions 
have verified) you apply the evaluation in your rule entity. A rule should 
knows hot to do if the conditions evaluation is true.

And the only wrong thing is my English.
(Smile).

--------------------------------------------------
From: "Dalla" <dalla_man...@hotmail.com>
Sent: Tuesday, August 25, 2009 10:07 AM
To: "Google Web Toolkit" <google-web-toolkit@googlegroups.com>
Subject: Re: Plain OO question

>
> That seems like a good solution. But to me something seems to be
> missing.
> Let´s say I create a DiscountPriceRule, with a DateRangeCondition.
>
> How would I apply this to the Course object? It doesn´t (and shouldn
> ´t?) contain any information about when it was bought, how many and so
> on.
> It seems like I would need yet another class, somehing like an
> CourseOrder that would contain this kind of information,
> and that the interface DiscountPriceRule maybe should look like this?
>
> class CourseOrder {
>    Course course;
>    Date OrderDate;
>    Integer orderAmount
> }
>
> interface Rule {
>    boolean evaluateConditions( CourseOrder c );
>    Set<Condition> getConditions();
>    void setConditions( Set<Condition> conditions );
>    EvaluationResult apply ( CourseOrder c );
> }
>
> Or am I wrong again? :-)
>
> On 25 Aug, 04:03, "Alessandro Loche" <alessandro.lo...@gmail.com>
> wrote:
>> You should think in terms of Rules and Conditions.
>>
>> interface Rule {
>>     boolean evaluateConditions( Course c );
>>     Set<Condition> getConditions();
>>     void setConditions( Set<Condition> conditions );
>>     EvaluationResult apply ( Course c );
>>
>> }
>>
>> interface Condition {
>>     isTrue( Course c);
>>
>> }
>>
>> Any special offer implements Rule and has one or more Conditions. A 
>> concrete
>> rule call evaluateCondition for each conditions it has. If true, apply 
>> the
>> result trasformation.
>> In your case, the rule is the same, something like DiscountPriceRule. But
>> the conditions change. One condition is about date range, another one is 
>> on
>> totatal course amount.
>>
>> Any condition evaluates itself in a course context, and you can implement
>> the apply() method as a Visitor. The EvaluationResult can be a new price 
>> or
>> saving.
>>
>> Regards.
>> --------------------------------------------------
>> From: "Dalla" <dalla_man...@hotmail.com>
>> Sent: Monday, August 24, 2009 10:39 PM
>> To: "Google Web Toolkit" <google-web-toolkit@googlegroups.com>
>> Subject:PlainOOquestion
>>
>>
>>
>>
>>
>> > Hi all
>>
>> > This is probably a pretty basicOOquestion, but here goes:
>> > I have a simple Course class, containing a course ID, course name,
>> > course price etc.
>>
>> > I´m looking for a good way to implement different types of special
>> > offers on these courses,
>> > like "buy five courses, get 10% off" or "from September 1 to September
>> > 15, get 5% off this course".
>>
>> > What would be the best way to do this?
>> > I was thinking something like
>>
>> > interface SpecialOffer {
>> >    double getSpecialOfferPrice(Course c); //Return new price
>> >    double getSpecialOfferSavings(Course c); //Return % saved
>> > }
>>
>> > class BuyManyOffer implements SpecialOffer {
>>
>> >     Integer buyManyLimit;
>>
>> >     public LimitedTimeOffer(Date date) {
>> >        this. buyManyLimit = date;
>> >     }
>>
>> >     public double getSpecialOfferPrice(Course c) {
>> >          //return something;
>> >     }
>> >     double getSpecialOfferSavings(Course c) {
>> >         return somethingElse;
>> >     }
>> > }
>>
>> > class LimitedTimeOffer implements SpecialOffer {
>>
>> >     Date offerStart;
>> >     Date offerStop;
>>
>> >     public LimitedTimeOffer(Date dateStart, Date dateStop) {
>> >        this.offerStart = dateStart;
>> >        this.offerStop = dateStop;
>> >     }
>>
>> >     public double getSpecialOfferPrice(Course c) {
>> >          //return something;
>> >     }
>> >     double getSpecialOfferSavings(Course c) {
>> >         return somethingElse;
>> >     }
>> > }
>>
>> > But is this really the way to go?
>> > I can create different offers, the constructor allows me to dictate
>> > the rules for the offer to apply.
>> > But I don´t know how I would know if the offer applies or not at a
>> > given time.
>>
>> > Somehow I need to know that the customer has bought more than x number
>> > of courses, or bought the course inside the time limit,
>> > but if I put number of courses in the interface, it wouldn´t make
>> > sense for the LimitedTimeOffer,
>> > and putting the a date in there wouldn´t make sense to the
>> > BuyManyOffer.
>>
>> > Any pointers?- Dölj citerad text -
>>
>> - Visa citerad text -
> > 

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To post to this group, send email to google-web-toolkit@googlegroups.com
To unsubscribe from this group, send email to 
google-web-toolkit+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-web-toolkit?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to