Вы не можете просматривать ссылку пожалуйста воспользуйтесь следующими ссылками
Вход или Регистрация
более менее оптимальный вариант, проектирование систем на основе акторов, в java.Для простоты и прозрачности, логики, все поведение програмируется внутренними классами.
Реализовал базовый набор по Hewitt-у, во время обработки сообщения, актор может:
- отправлять сообщения другим акторам и самому себе(рекурсивное сообщение) (метод Context.send и Reference.send)
- менять свое поведения (метод Context.become)
- создавать других акторов (метод Context.create)
О поведении актора, на основе просто примере будет более наглядно:
Код:
package fact.samples;
import fact.Context;
public class Account implements Context {
final String login;
final String password;
Account(String login, String password) {
this.login = login;
this.password = password;
}
public void define() {
become("Free");
}
public void logout() {
System.out.println("wrong logout");
}
public class Free {
public void login(String login, String password) {
if(Account.this.login.equals(login) && Account.this.password.equals(password)) {
System.out.println("login success");
become("Login");
} else
System.out.println("wrong login or password");
}
}
public class Login {
public void login(String login, String password) {
System.out.println("account in use");
}
public void logout() {
System.out.println("logout");
become("Free");
}
}
}
Если расширить данный пример, можно реализовать актор для сервера авторизации.
Замечание: если пришло сообщение, которого нету в заданном поведение, то метод для обработки сообщения ищеться в базов классе. В данном примере, если отправить сообщение logout, когда актор установлен как Free, будет вызван обработчик из базового класса Account, на экран консоли, выведиться сообщение "wrong logout"
Пример использования:
Код:
package fact.samples;
import fact.Context;
import fact.Model;
import fact.Reference;
public class AccountSample implements Context {
public void define() {
Reference account = create("account", new Account("root", "root"));
account.send("logout");
account.send("login", "root", "1243");
account.send("login", "root", "root");
account.send("login", "root", "root");
account.send("logout");
account.send("logout");
account.send("login", "root", "root");
}
public static void main(String...args) {
Model.launch(new AccountSample());
}
}
Код:
wrong logout
wrong login or password
login success
account in use
logout
wrong logout
login success