Skip to content

Commit 1d8dac5

Browse files
committed
design pattern updated : singleton, cor and mediator
1 parent 006e845 commit 1d8dac5

42 files changed

Lines changed: 646 additions & 152 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

design-patterns/src/main/java/davidhxxx/teach/designpattern/cor/RuleApplyDiscountHappyHour.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import davidhxxx.teach.designpattern.cor.common.AbstractRule;
44
import davidhxxx.teach.designpattern.cor.common.InputForDiscountRules;
55

6-
public class RuleApplyDiscountHappyHour extends AbstractRule {
6+
public class RuleApplyDiscountHappyHour extends AbstractRule {
77

88
public boolean apply(InputForDiscountRules inputDataForDiscountRules) {
99
if (applyDiscountWhenHappyHour(inputDataForDiscountRules)) {

design-patterns/src/main/java/davidhxxx/teach/designpattern/cor/RuleApplyDiscountMore4OrdersInOneMonth.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import davidhxxx.teach.designpattern.cor.common.AbstractRule;
44
import davidhxxx.teach.designpattern.cor.common.InputForDiscountRules;
55

6-
public class RuleApplyDiscountMore4OrdersInOneMonth extends AbstractRule {
6+
public class RuleApplyDiscountMore4OrdersInOneMonth extends AbstractRule {
77

88
public boolean apply(InputForDiscountRules inputDataForDiscountRules) {
99
if (applyDiscountWhenMore4OrdersInOneMonth(inputDataForDiscountRules)) {

design-patterns/src/main/java/davidhxxx/teach/designpattern/cor/RuleApplyDiscountOrderMore100Euros.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import davidhxxx.teach.designpattern.cor.common.InputForDiscountRules;
55
import davidhxxx.teach.designpattern.cor.common.Order;
66

7-
public class RuleApplyDiscountOrderMore100Euros extends AbstractRule {
7+
public class RuleApplyDiscountOrderMore100Euros extends AbstractRule {
88

99
public boolean apply(InputForDiscountRules inputDataForDiscountRules) {
1010
if (applyDiscountWhenOrderMore100Euros(inputDataForDiscountRules)) {

design-patterns/src/main/java/davidhxxx/teach/designpattern/cor/RuleApplyDiscountOrderMore200Euros.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import davidhxxx.teach.designpattern.cor.common.InputForDiscountRules;
55
import davidhxxx.teach.designpattern.cor.common.Order;
66

7-
public class RuleApplyDiscountOrderMore200Euros extends AbstractRule {
7+
public class RuleApplyDiscountOrderMore200Euros extends AbstractRule {
88

99
public boolean apply(InputForDiscountRules inputDataForDiscountRules) {
1010
if (applyDiscountWhenOrderMore200Euros(inputDataForDiscountRules)) {

design-patterns/src/main/java/davidhxxx/teach/designpattern/cor/common/AbstractRule.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public boolean applyNextRuleIfExist(InputForDiscountRules inputDataForDiscountRu
1313
return this.nextRule.apply(inputDataForDiscountRules);
1414
}
1515

16-
return true;
16+
return false;
1717
}
1818

1919
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package davidhxxx.teach.designpattern.cor.improved;
2+
3+
import davidhxxx.teach.designpattern.cor.improved.common.AbstractRule;
4+
import davidhxxx.teach.designpattern.cor.improved.common.IDiscountRule;
5+
import davidhxxx.teach.designpattern.cor.improved.common.InputForDiscountRules;
6+
7+
public class RuleApplyDiscountFirstOrder extends AbstractRule implements IDiscountRule {
8+
9+
public boolean apply(InputForDiscountRules inputDataForDiscountRules) {
10+
if (inputDataForDiscountRules.isFirstOrder()) {
11+
inputDataForDiscountRules.getOrder().applyDiscountInPrct(0.075F);
12+
return true;
13+
}
14+
return false;
15+
}
16+
17+
public float getPrctDiscount() {
18+
return 0.075F;
19+
}
20+
21+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package davidhxxx.teach.designpattern.cor.improved;
2+
3+
import davidhxxx.teach.designpattern.cor.improved.common.AbstractRule;
4+
import davidhxxx.teach.designpattern.cor.improved.common.IDiscountRule;
5+
import davidhxxx.teach.designpattern.cor.improved.common.InputForDiscountRules;
6+
import davidhxxx.teach.designpattern.cor.improved.common.Order;
7+
8+
public class RuleApplyDiscountFirstOrderAndMore200Euros extends AbstractRule implements IDiscountRule {
9+
10+
public boolean apply(InputForDiscountRules inputDataForDiscountRules) {
11+
Order order = inputDataForDiscountRules.getOrder();
12+
13+
if (inputDataForDiscountRules.isFirstOrder() && order.getPriceTotal() > 200) {
14+
order.applyDiscountInPrct(0.25F);
15+
return true;
16+
}
17+
return false;
18+
19+
}
20+
21+
public float getPrctDiscount() {
22+
return 0.28F;
23+
}
24+
25+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package davidhxxx.teach.designpattern.cor.improved;
2+
3+
import davidhxxx.teach.designpattern.cor.improved.common.AbstractRule;
4+
import davidhxxx.teach.designpattern.cor.improved.common.IDiscountRule;
5+
import davidhxxx.teach.designpattern.cor.improved.common.InputForDiscountRules;
6+
7+
public class RuleApplyDiscountHappyHour extends AbstractRule implements IDiscountRule {
8+
9+
public boolean apply(InputForDiscountRules inputDataForDiscountRules) {
10+
if (inputDataForDiscountRules.isHappyHour()) {
11+
inputDataForDiscountRules.getOrder().applyDiscountInPrct(0.05F);
12+
return true;
13+
}
14+
return false;
15+
}
16+
17+
18+
public float getPrctDiscount() {
19+
return 0.05F;
20+
}
21+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package davidhxxx.teach.designpattern.cor.improved;
2+
3+
import davidhxxx.teach.designpattern.cor.improved.common.AbstractRule;
4+
import davidhxxx.teach.designpattern.cor.improved.common.IDiscountRule;
5+
import davidhxxx.teach.designpattern.cor.improved.common.InputForDiscountRules;
6+
import davidhxxx.teach.designpattern.cor.improved.common.Order;
7+
8+
public class RuleApplyDiscountMore4OrdersInOneMonth extends AbstractRule implements IDiscountRule {
9+
10+
public boolean apply(InputForDiscountRules inputDataForDiscountRules) {
11+
12+
if (inputDataForDiscountRules.getOrderCountInOneMonth() > 4) {
13+
inputDataForDiscountRules.getOrder().applyDiscountInPrct(0.15F);
14+
return true;
15+
}
16+
return false;
17+
18+
}
19+
20+
public float getPrctDiscount() {
21+
return 0.15F;
22+
}
23+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package davidhxxx.teach.designpattern.cor.improved;
2+
3+
import davidhxxx.teach.designpattern.cor.improved.common.AbstractRule;
4+
import davidhxxx.teach.designpattern.cor.improved.common.IDiscountRule;
5+
import davidhxxx.teach.designpattern.cor.improved.common.InputForDiscountRules;
6+
import davidhxxx.teach.designpattern.cor.improved.common.Order;
7+
8+
9+
public class RuleApplyDiscountOrderMore100Euros extends AbstractRule implements IDiscountRule{
10+
11+
public boolean apply(InputForDiscountRules inputDataForDiscountRules) {
12+
Order order = inputDataForDiscountRules.getOrder();
13+
14+
if (order.getPriceTotal() > 100) {
15+
order.applyDiscountInPrct(0.1F);
16+
return true;
17+
}
18+
return false;
19+
}
20+
21+
22+
public float getPrctDiscount() {
23+
return 0.1F;
24+
}
25+
26+
}

0 commit comments

Comments
 (0)