Compare commits
2 Commits
fd99c16e89
...
42c63045b0
| Author | SHA1 | Date | |
|---|---|---|---|
|
42c63045b0
|
|||
|
d46443f6d5
|
@@ -3,13 +3,13 @@ package lab7_state.ex2;
|
|||||||
import lab7_state.ex2.states.*;
|
import lab7_state.ex2.states.*;
|
||||||
|
|
||||||
public class User {
|
public class User {
|
||||||
private String name;
|
private final String name;
|
||||||
private UserState currentState;
|
private UserState currentState;
|
||||||
private UserState unregisteredState;
|
private final UserState unregisteredState;
|
||||||
private UserState registeredState;
|
private final UserState registeredState;
|
||||||
private UserState inMeetingState;
|
private final UserState inMeetingState;
|
||||||
private UserState waitingToSpeakState;
|
private final UserState waitingToSpeakState;
|
||||||
private UserState speakingState;
|
private final UserState speakingState;
|
||||||
|
|
||||||
public User(String name) {
|
public User(String name) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
|
|||||||
9
src/lab9_responsibility_chain/ex1/Email.java
Normal file
9
src/lab9_responsibility_chain/ex1/Email.java
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
package lab9_responsibility_chain.ex1;
|
||||||
|
|
||||||
|
public record Email(String subject, EmailType type) {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "<" + type + " Email: '" + subject + "'>";
|
||||||
|
}
|
||||||
|
}
|
||||||
8
src/lab9_responsibility_chain/ex1/EmailType.java
Normal file
8
src/lab9_responsibility_chain/ex1/EmailType.java
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
package lab9_responsibility_chain.ex1;
|
||||||
|
|
||||||
|
public enum EmailType {
|
||||||
|
SPAM,
|
||||||
|
FAN,
|
||||||
|
COMPLAINT,
|
||||||
|
NEW_LOC
|
||||||
|
}
|
||||||
11
src/lab9_responsibility_chain/ex1/Handler.java
Normal file
11
src/lab9_responsibility_chain/ex1/Handler.java
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
package lab9_responsibility_chain.ex1;
|
||||||
|
|
||||||
|
public abstract class Handler {
|
||||||
|
protected Handler successor;
|
||||||
|
|
||||||
|
public void setSuccessor(Handler successor) {
|
||||||
|
this.successor = successor;
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract void handleEmail(Email email);
|
||||||
|
}
|
||||||
26
src/lab9_responsibility_chain/ex1/Main.java
Normal file
26
src/lab9_responsibility_chain/ex1/Main.java
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
package lab9_responsibility_chain.ex1;
|
||||||
|
|
||||||
|
import lab9_responsibility_chain.ex1.handlers.*;
|
||||||
|
|
||||||
|
public class Main {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
Handler spamHandler = new SpamHandler();
|
||||||
|
Handler fanHandler = new FanHandler();
|
||||||
|
Handler complaintHandler = new ComplaintHandler();
|
||||||
|
Handler newLocHandler = new NewLocHandler();
|
||||||
|
|
||||||
|
spamHandler.setSuccessor(fanHandler);
|
||||||
|
fanHandler.setSuccessor(complaintHandler);
|
||||||
|
complaintHandler.setSuccessor(newLocHandler);
|
||||||
|
|
||||||
|
Email email1 = new Email("You WON the LoTtErY !!!!!", EmailType.SPAM);
|
||||||
|
Email email2 = new Email("Your company is awesome !", EmailType.FAN);
|
||||||
|
Email email3 = new Email("My children are addicted :(", EmailType.COMPLAINT);
|
||||||
|
Email email4 = new Email("Please come to Sion :)", EmailType.NEW_LOC);
|
||||||
|
|
||||||
|
spamHandler.handleEmail(email1);
|
||||||
|
spamHandler.handleEmail(email2);
|
||||||
|
spamHandler.handleEmail(email3);
|
||||||
|
spamHandler.handleEmail(email4);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
package lab9_responsibility_chain.ex1.handlers;
|
||||||
|
|
||||||
|
import lab9_responsibility_chain.ex1.Email;
|
||||||
|
import lab9_responsibility_chain.ex1.EmailType;
|
||||||
|
import lab9_responsibility_chain.ex1.Handler;
|
||||||
|
|
||||||
|
public class ComplaintHandler extends Handler {
|
||||||
|
@Override
|
||||||
|
public void handleEmail(Email email) {
|
||||||
|
if (email.type() == EmailType.COMPLAINT) {
|
||||||
|
System.out.println("Forwarding complaint to legal department (" + email + ")");
|
||||||
|
} else if (successor != null) {
|
||||||
|
successor.handleEmail(email);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
16
src/lab9_responsibility_chain/ex1/handlers/FanHandler.java
Normal file
16
src/lab9_responsibility_chain/ex1/handlers/FanHandler.java
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
package lab9_responsibility_chain.ex1.handlers;
|
||||||
|
|
||||||
|
import lab9_responsibility_chain.ex1.Email;
|
||||||
|
import lab9_responsibility_chain.ex1.EmailType;
|
||||||
|
import lab9_responsibility_chain.ex1.Handler;
|
||||||
|
|
||||||
|
public class FanHandler extends Handler {
|
||||||
|
@Override
|
||||||
|
public void handleEmail(Email email) {
|
||||||
|
if (email.type() == EmailType.FAN) {
|
||||||
|
System.out.println("Forwarding fan email to CEO (" + email + ")");
|
||||||
|
} else if (successor != null) {
|
||||||
|
successor.handleEmail(email);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
package lab9_responsibility_chain.ex1.handlers;
|
||||||
|
|
||||||
|
import lab9_responsibility_chain.ex1.Email;
|
||||||
|
import lab9_responsibility_chain.ex1.EmailType;
|
||||||
|
import lab9_responsibility_chain.ex1.Handler;
|
||||||
|
|
||||||
|
public class NewLocHandler extends Handler {
|
||||||
|
@Override
|
||||||
|
public void handleEmail(Email email) {
|
||||||
|
if (email.type() == EmailType.NEW_LOC) {
|
||||||
|
System.out.println("Forwarding request to business development (" + email + ")");
|
||||||
|
} else if (successor != null) {
|
||||||
|
successor.handleEmail(email);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
16
src/lab9_responsibility_chain/ex1/handlers/SpamHandler.java
Normal file
16
src/lab9_responsibility_chain/ex1/handlers/SpamHandler.java
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
package lab9_responsibility_chain.ex1.handlers;
|
||||||
|
|
||||||
|
import lab9_responsibility_chain.ex1.Email;
|
||||||
|
import lab9_responsibility_chain.ex1.EmailType;
|
||||||
|
import lab9_responsibility_chain.ex1.Handler;
|
||||||
|
|
||||||
|
public class SpamHandler extends Handler {
|
||||||
|
@Override
|
||||||
|
public void handleEmail(Email email) {
|
||||||
|
if (email.type() == EmailType.SPAM) {
|
||||||
|
System.out.println("Deleting spam email (" + email + ")");
|
||||||
|
} else if (successor != null) {
|
||||||
|
successor.handleEmail(email);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
19
src/learn/simple_responsibility_chain/ConcreteHandler1.java
Normal file
19
src/learn/simple_responsibility_chain/ConcreteHandler1.java
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
package learn.simple_responsibility_chain;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class ConcreteHandler1 extends Handler {
|
||||||
|
private final List<String> myAnimals = Arrays.asList("cat", "dog", "horse");
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handleRequest(Request request) {
|
||||||
|
if (myAnimals.contains(request.getValue())) {
|
||||||
|
System.out.println("Request for " + request.getValue() + " handled by " + this);
|
||||||
|
} else {
|
||||||
|
if (successor != null) {
|
||||||
|
successor.handleRequest(request);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
19
src/learn/simple_responsibility_chain/ConcreteHandler2.java
Normal file
19
src/learn/simple_responsibility_chain/ConcreteHandler2.java
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
package learn.simple_responsibility_chain;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class ConcreteHandler2 extends Handler {
|
||||||
|
private final List<String> myColors = Arrays.asList("red", "yellow", "blue");
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handleRequest(Request request) {
|
||||||
|
if (myColors.contains(request.getValue())) {
|
||||||
|
System.out.println("Request for " + request.getValue() + " handled by " + this);
|
||||||
|
} else {
|
||||||
|
if (successor != null) {
|
||||||
|
successor.handleRequest(request);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
17
src/learn/simple_responsibility_chain/ConcreteHandler3.java
Normal file
17
src/learn/simple_responsibility_chain/ConcreteHandler3.java
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
package learn.simple_responsibility_chain;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class ConcreteHandler3 extends Handler {
|
||||||
|
private final List<String> myNumbers = Arrays.asList("1", "2", "3");
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handleRequest(Request request) {
|
||||||
|
if (myNumbers.contains(request.getValue())) {
|
||||||
|
System.out.println("Request for " + request.getValue() + " handled by " + this);
|
||||||
|
} else {
|
||||||
|
throw new RuntimeException("Request could not be handled");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
src/learn/simple_responsibility_chain/Handler.java
Normal file
11
src/learn/simple_responsibility_chain/Handler.java
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
package learn.simple_responsibility_chain;
|
||||||
|
|
||||||
|
public abstract class Handler {
|
||||||
|
protected Handler successor;
|
||||||
|
|
||||||
|
public void setSuccessor(Handler successor) {
|
||||||
|
this.successor = successor;
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract void handleRequest(Request request);
|
||||||
|
}
|
||||||
21
src/learn/simple_responsibility_chain/Main.java
Normal file
21
src/learn/simple_responsibility_chain/Main.java
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
package learn.simple_responsibility_chain;
|
||||||
|
|
||||||
|
public class Main {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
Handler firstHandler = new ConcreteHandler1();
|
||||||
|
Handler secondHandler = new ConcreteHandler2();
|
||||||
|
Handler thirdHandler = new ConcreteHandler3();
|
||||||
|
|
||||||
|
firstHandler.setSuccessor(secondHandler);
|
||||||
|
secondHandler.setSuccessor(thirdHandler);
|
||||||
|
|
||||||
|
Request request1 = new Request("dog");
|
||||||
|
firstHandler.handleRequest(request1);
|
||||||
|
|
||||||
|
Request request2 = new Request("3");
|
||||||
|
firstHandler.handleRequest(request2);
|
||||||
|
|
||||||
|
Request request3 = new Request("house");
|
||||||
|
firstHandler.handleRequest(request3);
|
||||||
|
}
|
||||||
|
}
|
||||||
13
src/learn/simple_responsibility_chain/Request.java
Normal file
13
src/learn/simple_responsibility_chain/Request.java
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
package learn.simple_responsibility_chain;
|
||||||
|
|
||||||
|
public class Request {
|
||||||
|
private String value;
|
||||||
|
|
||||||
|
public Request(String value) {
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getValue() {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user