Skip to content

Commit a2edbf8

Browse files
committed
design pattern
1 parent 483c9c6 commit a2edbf8

File tree

22 files changed

+360
-1
lines changed

22 files changed

+360
-1
lines changed

DesignPatternByExample/.classpath

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<classpath>
3+
<classpathentry kind="src" path="src"/>
4+
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
5+
<classpathentry kind="output" path="bin"/>
6+
</classpath>

DesignPatternByExample/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/bin/

DesignPatternByExample/.project

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<projectDescription>
3+
<name>DesignPatternByExample</name>
4+
<comment></comment>
5+
<projects>
6+
</projects>
7+
<buildSpec>
8+
<buildCommand>
9+
<name>org.eclipse.jdt.core.javabuilder</name>
10+
<arguments>
11+
</arguments>
12+
</buildCommand>
13+
</buildSpec>
14+
<natures>
15+
<nature>org.eclipse.jdt.core.javanature</nature>
16+
</natures>
17+
</projectDescription>
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package com.design.chainofresponsibility.ATMdispencer;
2+
3+
import java.util.Scanner;
4+
5+
public class ATMDispenseChain {
6+
7+
private DispenseChain c1;
8+
9+
public ATMDispenseChain() {
10+
// initialize the chain
11+
this.c1 = new Dollar50Dispenser();
12+
DispenseChain c2 = new Dollar20Dispenser();
13+
DispenseChain c3 = new Dollar10Dispenser();
14+
15+
// set the chain of responsibility
16+
c1.setNextChain(c2);
17+
c2.setNextChain(c3);
18+
}
19+
20+
public static void main(String[] args) {
21+
ATMDispenseChain atmDispenser = new ATMDispenseChain();
22+
while (true) {
23+
int amount = 0;
24+
System.out.println("Enter amount to dispense");
25+
Scanner input = new Scanner(System.in);
26+
amount = input.nextInt();
27+
if (amount % 10 != 0) {
28+
System.out.println("Amount should be in multiple of 10s.");
29+
return;
30+
}
31+
// process the request
32+
atmDispenser.c1.dispense(new Currency(amount));
33+
}
34+
35+
}
36+
37+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.design.chainofresponsibility.ATMdispencer;
2+
3+
public class Currency {
4+
5+
private int amount;
6+
7+
public Currency(int amt) {
8+
this.amount = amt;
9+
}
10+
11+
public int getAmount() {
12+
return this.amount;
13+
}
14+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.design.chainofresponsibility.ATMdispencer;
2+
3+
public interface DispenseChain {
4+
5+
void setNextChain(DispenseChain nextChain);
6+
7+
void dispense(Currency cur);
8+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.design.chainofresponsibility.ATMdispencer;
2+
3+
public class Dollar10Dispenser implements DispenseChain {
4+
5+
private DispenseChain chain;
6+
7+
@Override
8+
public void setNextChain(DispenseChain nextChain) {
9+
this.chain = nextChain;
10+
}
11+
12+
@Override
13+
public void dispense(Currency cur) {
14+
if (cur.getAmount() >= 10) {
15+
int num = cur.getAmount() / 10;
16+
int remainder = cur.getAmount() % 10;
17+
System.out.println("Dispensing " + num + " 10$ note");
18+
if (remainder != 0)
19+
this.chain.dispense(new Currency(remainder));
20+
} else {
21+
this.chain.dispense(cur);
22+
}
23+
}
24+
25+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.design.chainofresponsibility.ATMdispencer;
2+
3+
public class Dollar20Dispenser implements DispenseChain {
4+
5+
private DispenseChain chain;
6+
7+
@Override
8+
public void setNextChain(DispenseChain nextChain) {
9+
this.chain = nextChain;
10+
}
11+
12+
@Override
13+
public void dispense(Currency cur) {
14+
if (cur.getAmount() >= 20) {
15+
int num = cur.getAmount() / 20;
16+
int remainder = cur.getAmount() % 20;
17+
System.out.println("Dispensing " + num + " 20$ note");
18+
if (remainder != 0)
19+
this.chain.dispense(new Currency(remainder));
20+
} else {
21+
this.chain.dispense(cur);
22+
}
23+
}
24+
25+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.design.chainofresponsibility.ATMdispencer;
2+
3+
public class Dollar50Dispenser implements DispenseChain {
4+
5+
private DispenseChain chain;
6+
7+
@Override
8+
public void setNextChain(DispenseChain nextChain) {
9+
this.chain = nextChain;
10+
}
11+
12+
@Override
13+
public void dispense(Currency cur) {
14+
if (cur.getAmount() >= 50) {
15+
int num = cur.getAmount() / 50;
16+
int remainder = cur.getAmount() % 50;
17+
System.out.println("Dispensing " + num + " 50$ note");
18+
if (remainder != 0)
19+
this.chain.dispense(new Currency(remainder));
20+
} else {
21+
this.chain.dispense(cur);
22+
}
23+
}
24+
25+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.design.mediator;
2+
3+
public class ChatClient {
4+
5+
public static void main(String[] args) {
6+
ChatMediator mediator = new ChatMediatorImpl();
7+
User user1 = new UserImpl(mediator, "Pankaj");
8+
User user2 = new UserImpl(mediator, "Lisa");
9+
User user3 = new UserImpl(mediator, "Saurabh");
10+
User user4 = new UserImpl(mediator, "David");
11+
mediator.addUser(user1);
12+
mediator.addUser(user2);
13+
mediator.addUser(user3);
14+
mediator.addUser(user4);
15+
16+
user1.send("Hi All");
17+
18+
}
19+
20+
}

0 commit comments

Comments
 (0)