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");
}
}
}
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
package fact.samples;
import fact.Context;
import fact.Model;
public class CounterDelay implements Context {
private long count = 0;
public void define() {
send("print").delay(1000);
send("tick");
}
public void tick() {
count++;
send("tick");
}
public void print() {
System.out.println(count);
count = 0;
send("print").delay(1000);
}
public static void main(String...args) {
Model.launch(new CounterDelay());
}
}
package fact.samples;
import fact.Context;
public class AccountRequest implements Context {
private String login;
private String password;
public AccountRequest(String login, String password) {
this.login = login;
this.password = password;
}
public void login(String login, String password) {
if(this.login.equals(login) && this.password.equals(password)) {
reply(success);
} else
complaint(LoginFail.WrongLoginOrPassword);
}
public static class LoginSuccess {
private LoginSuccess() { }
}
private final static LoginSuccess success = new LoginSuccess();
public enum LoginFail {
WrongLoginOrPassword,
AccountInUse
}
}
public class RequestSample implements Context {
Reference account;
public void define() {
account = create("account", new AccountRequest("root", "root"));
account.request("login", "login", "login").handle("Request");
send("tick");
send("print");
}
public void tick() {
account.request("login", "root", "root").handle("Request");
send("print");
}
public void print() {
System.out.println("print");
}
public class Request {
public void reply(LoginFail fail) {
System.out.println("login failed");
}
public void reply(LoginSuccess success) {
System.out.println("login success");
}
}
public static void main(String...args) {
Model.launch(new RequestSample());
}
}
а ты присоединисьОффтоп:Тема одного актёра?
да не, мне всё нравится) Просто как-то без поддержки сторонних участников и советов других мастеров. Ощущение что человек сам с собой тут общается.Человек описывает свою работу, не нравится внесите свою лепту
Если бы шарил в этом что-тоОффтоп:
а ты присоединись
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?