These are my notes for the book Headfirst Design Patterns.
Monitor gumball machine remotely.
- Java's RMI:
- client object --> client helper (proxy, "stub") --> service helper ("skeleton") --> service object
- RMI: build client helper + service helper
- make a remote interface: defines available remote methods
- make a remote implementation (aka remote service)
- create stub and skeleton using rmic (both proxy and real object use same interface)
- start rmi registry
- start remote service
- client: does a lookup on RMI registry, RMI registry deserialize and return the stub object. (client must have the stub class, although it always uses the remote interface)
- Provides a surrogate or placeholder for another object to control access to it. Maybe remote, expensive to create (virtual proxy) or in need of securing.
- Control and manage access
- Remote proxy: acts as a local representative to a remote object.
- Virtual proxy: delegate requests directly to object after it is created.
- Protection proxy:
invocationHandlerdecides what method to call on actual object.