Skip to content

Commit 1a42c76

Browse files
committed
command added
1 parent b5895ee commit 1a42c76

File tree

15 files changed

+203
-0
lines changed

15 files changed

+203
-0
lines changed

command/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# Command
2+
This is repository of http://androidcode.pl blog. It Shows uses of Command in Android. It is a part of Design Patterns - Command post in the blog.

command/example/Main.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
public class Main {
2+
3+
public static void main() {
4+
//user navigate to account's orders view
5+
AccountManager accountManager = new AccountManager();
6+
OrderManager orderManager = new OrderManager();
7+
8+
//user create and execute single order
9+
accountManager.takeOrder(new Loan(orderManager, 10000, 90)); //authorize and execute
10+
11+
//user decided to create orders and authorizate all of them once
12+
accountManager.addOrder(new Transfer(orderManager, "12 3456 7890", 500, "For trip"));
13+
accountManager.addOrder(new Transfer(orderManager, "30 4050 6070", 500, "Auction nr 987"));
14+
accountManager.addOrder(new StandingOrder(orderManager, "11 2222 3333", 80, "Netflix"));
15+
16+
//authorize and take all orders
17+
accountManager.takeOrders();
18+
}
19+
}

command/example/command/Loan.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
public class Loan implements Order {
2+
3+
private OrderManager manager;
4+
private int amount, repaymentDays;
5+
6+
public Loan(OrderManager manager, int amount, repaymentDays) {
7+
this.manager = manager;
8+
}
9+
10+
@Override
11+
public void execute() {
12+
manager.takeLoan(amount, repaymentDays);
13+
}
14+
}

command/example/command/Order.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
interface Order {
2+
3+
void execute();
4+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
public class StandingOrder implements Order {
2+
3+
private OrderManager manager;
4+
private String recipient;
5+
private int amount, intervalDays;
6+
7+
public StandingOrder(OrderManager manager, String recipient, int amount, int intervalDays) {
8+
this.manager = manager;
9+
}
10+
11+
@Override
12+
public void execute() {
13+
manager.scheduleStandingOrder(recipient, amount, intervalDays);
14+
}
15+
}

command/example/command/Transfer.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
public class Transfer implements Order {
2+
3+
private OrderManager manager;
4+
private String recipient, title;
5+
private int amount;
6+
7+
public Transfer(OrderManager manager, String recipient, int amount, String title) {
8+
this.manager = manager;
9+
}
10+
11+
@Override
12+
public void execute() {
13+
manager.transferMoney(recipient, amount, title);
14+
}
15+
}

command/example/dummy/Log.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
public class Log {
2+
3+
//fields and constructors
4+
5+
public static void log(String text) {
6+
//log text
7+
}
8+
9+
//other methods
10+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
public class AccountManager {
2+
3+
private List<Order> orders = new ArrayList<>();
4+
5+
public void takeOrder(Order order) {
6+
//authorize
7+
//if authorization success then execue order
8+
order.execute();
9+
}
10+
11+
public void takeOrders() {
12+
//authorize
13+
//if authorization success then execue orders
14+
for(Order order : orders)
15+
order.execute();
16+
}
17+
18+
public void addOrder(Order order) {
19+
orders.add(order);
20+
}
21+
22+
public void clearOrders() {
23+
orders.clear();
24+
}
25+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
public class OrderManager {
2+
3+
//constructors and fields
4+
5+
public void scheduleStandingOrder(String recipient, int amount, int intervalDays) {
6+
//do action
7+
Log.log("Standing order to: " + recipient + " for: " + amount + " with interval: " + intervalDays + " days");
8+
//save in history
9+
}
10+
11+
public void transferMoney(String recipient, int amount, String title) {
12+
//do action
13+
Log.log("Transfer to: " + recipient + "for: " + amount + " with title: " + title);
14+
//save in history
15+
}
16+
17+
public void takeLoan(int amount, int repaymentDays) {
18+
//do action
19+
Log.log("Loan for: " + amount + " to repayment until: " + manager.getRepaymentDate(repaymentDays));
20+
//save in history
21+
}
22+
23+
public String getRepaymentDate(int repaymentDays) {
24+
return LocalDateTime.now().plusDays(repaymentDays).toString();
25+
}
26+
}

command/pattern/Invoker.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
public class Invoker {
2+
3+
//could be list of commands to provide additional history control if needed
4+
private Command command;
5+
6+
public void setCommand(Command command) {
7+
this.command = command;
8+
}
9+
10+
public void start(Command command) {
11+
command.execute();
12+
}
13+
}

0 commit comments

Comments
 (0)