class Person {
private void eventOccurs() {
react();
AnotherPerson.react();
}
private react() {
//Реакция этого персонажа на событие mIdDone;
}
}
public interface Event {
void subscribe(Actor a);
}
public interface FullEvent extends Event {
void fire();
void addReaction(...)
}
public class Person {
private final FullEvent fullEvent = new FullEventImpl();
public getEvent() {
return new Event() { // Теперь никак нельзя вызвать fire() - ни через приведение типов, ни через рефлексию.
@Override
public subscribe(Actor a) {
fullEvent.subscribe(a);
}
}
}
....
}
public interface Transaction {
void commit();
void rollback();
}
public static void tryTransaction(Transaction tr) {
try {
tr.commit();
} catch (Exception e) {
//log.error....
tr.rollback();
throw new CommitException(...);
}
}
tryTransaction(new Transaction() {
@Override
public void commit() {
//step1
//...
//step2
tryTransaction(new Transaction() {
...
});
}
@Override
public void rollback() {
}
});
Pattern pathPattern = Pattern.compile("(\\w+=\\w+\\s*)");
Matcher matcher = pathPattern.matcher("sdf=ff ggg=dd hhh=44 jjj=5456");
while (matcher.find()) {
for (int i=1; i<=matcher.groupCount(); i++) {
System.out.println(matcher.group(i));
}
}
sdf=ff ggg=dd hhh=44 jjj=5456