1.
class Memento {
private int state;
public Memento(int state) {
this.state = state;
}
public int getState() {
return state;
}
}
class Originator {
private int state;
public void setState(int state) {
this.state = state;
}
public Memento createMemento() {
return new Memento(state);
}
public void setMemento(Memento m) {
state = m.getState();
}
}
class Caretaker {
private Memento memento;
public void save(Memento m) {
memento = m;
}
public Memento load() {
return memento;
}
}
---
Originator originator = new Originator();
Caretaker caretaker = new Caretaker();
originator.setState(1);
// сохраняем состояние
caretaker.save(originator.createMemento());
originator.setState(2);
// возвращаем старое состояние
originator.setMemento(caretaker.load());
---
2
interface Subject {
void request();
}
class RealSubject implements Subject {
public void request() {
System.out.println("RealSubject request");
}
}
class Proxy implements Subject {
private RealSubject realSubject;
public Proxy(RealSubject realSubject) {
this.realSubject = realSubject;
}
public void request() {
// что-то делаем до вызова
System.out.println("Proxy: before");
realSubject.request();
// что-то делаем после вызова
System.out.println("Proxy: after");
}
}
---
RealSubject real = new RealSubject();
Subject proxy = new Proxy(real);
proxy.request();
---
3
class Product {
}
interface Builder {
void buildPartA();
void buildPartB();
Product getResult();
}
class ConcreteBuilder implements Builder {
private Product product = new Product();
public void buildPartA() {
System.out.println("Build part A");
}
public void buildPartB() {
System.out.println("Build part B");
}
public Product getResult() {
return product;
}
}
class Director {
private Builder builder;
public Director(Builder builder) {
this.builder = builder;
}
public void construct() {
builder.buildPartA();
builder.buildPartB();
}
}
---
Builder builder = new ConcreteBuilder();
Director director = new Director(builder);
director.construct();
Product product = builder.getResult();