1 / 25

Proxy, Observer, Symbolic Links

Proxy, Observer, Symbolic Links. Rebecca Chernoff. Proxy Pattern. Intent Provide a surrogate or placeholder for another object to control access to it Other Names Surrogate. Proxy: Motivations & Applicability. Remote Proxy Virtual Proxy Protection Proxy Smart Reference.

birch
Télécharger la présentation

Proxy, Observer, Symbolic Links

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Proxy, Observer, Symbolic Links Rebecca Chernoff

  2. Proxy Pattern • Intent • Provide a surrogate or placeholder for another object to control access to it • Other Names • Surrogate

  3. Proxy: Motivations & Applicability • Remote Proxy • Virtual Proxy • Protection Proxy • Smart Reference • Local representative of object in a different address space. • Defer cost of creation and initialization. • Protection via access control. • Reference counting • Load a persistent object into memory when first referenced • Object locking

  4. Proxy: Participants • RealSubject • Defines the real object that the proxy represents. • Subject • Defines the common interface for RealSubject and Proxy. • Allows for a Proxy to be used wherever a RealSubject is expected.

  5. Proxy: Participants • Proxy • Maintains a reference to the real subject. May refer to a Subject if the RealSubject and Subject interfaces are the same. • Identical interface to Subject so the Proxy can be substituted. • Controls access to the real subject. • May be responsible for creating and deleting the real subject.

  6. Proxy: Participants • Additional Responsibilities of Proxy • Remote Proxy • Encode and send the request to the real subject in a different address space. • Virtual Proxy • Cache additional information in order to postpone accessing the real subject. • Protection Proxy • Check access permissions.

  7. Proxy: Structure

  8. Proxy: Consequences • Introduces a level of indirection • Remote Proxy • Hides fact that object resides in a different address space. • Virtual Proxy • Perform optimizations such as creation on demand. • Protection Proxy and Smart References • Allow additional housekeeping tasks when object is accessed. • Copy-On-Write

  9. Proxy: Related Patterns • Adapter • Provides a different interface to an object, but since Proxy can refuse to perform a request, the interface is effectively a subset. • Decorator • Similar implementation to proxy, but different purpose. Decorator adds responsibilities whereas proxy controls access.

  10. Observer Pattern • Intent • Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically • Also Known As • Dependents • Publish-Subscribe

  11. Observer: Motivation • Maintain consistency between related objects. • Application Data vs. Presentation • Avoid tightly coupled classes that reduce reusability.

  12. Observer: Applicability • An abstraction has two aspects, one dependent on the other. • A change to one object requires changing others. • An object should be able to notify other objects without making assumptions about the objects.

  13. Observer: Participants • Observer • Defines an interface for objects to be notified when a subject changes. • Subject • Defines an interface for attaching and detaching Observer objects. • Unknown number of Observer objects.

  14. Observer: Participants • ConcreteObserver • Implements the Observer interface to keep its state consistent with the subject’s. • Maintains a reference to the ConcreteSubject • Stores state that should stay consistent with the subject’s. • ConcreteSubject • Implements the Subject interface to update Observers. • Stores state of interest to ConcreteObserver objects. • Sends a notification to its observers when its state changes.

  15. Observer: Structure

  16. Observer: Collaborations

  17. Observer: Consequences • Vary subjects and observers independently. • Abstract coupling between Subject and Observer. • Support for broadcast communication. • Simple update to Server may cause a cascade of updates to Observer and its dependent objects.

  18. Observer: Implementation • Mapping subjects to their observers. • Tradeoff between time and space. • Observing more than one subject. • Observer needs to know which Subject is notifying. • Who triggers the update? • Subject: client doesn’t have to remember to update, but consecutive operations cause multiple updates. • Observer: client can wait to trigger the update, but client must remember to call update. • Dangling references to deleted subjects. • Notify observers right before deletion. Observers of multiple Subjects can’t be deleted when just one Subject is deleted.

  19. Observer: Implementation • Making sure the Subject state is self-consistent before notification. • Use TemplateMethod pattern with Notify as last operation. • Avoiding observer-specific update protocols: the push and pull models. • Push Model: Detailed information sent regardless. • Pull Model: Observers ask for details explicitly. • Specifying modifications of interest explicitly. • Observers register for a specific aspect of interest.

  20. Observer: Implementation • Encapsulating complex update semantics. • Change-Manager • Takes responsibility of maintaining references to observers away from the Subject. • Defines a particular update strategy. • Updates all dependent observers at the request of a subject. • Combining the Subject and Observer classes. • When multiple inheritance not supported by language, both interfaces may reside in one class.

  21. Observer • Related Patterns • Mediator • The ChangeManager encapsulates complex update semantics, thus acting as a mediator between the Subject and its Observers. • Singleton • ChangeManager may be unique and globally accessible.

  22. But Where Do Surrogates Fit into This? • File System Example • Symbolic Links / Aliases / Shortcuts • Reference to another node in the file system. • Surrogate for a node, not the node itself. • Own access rights. • Edit and save a file. • Add and remove nodes to a directory.

  23. But Where Do Surrogates Fit into This? • How do I find the right design pattern for the task? • Consider how design patterns solve design problems. • Scan the Intent sections for something that sounds right. • Study how patterns interrelate. • Look at patterns whose purpose corresponds to what you’re trying to do. • Examine a relevant cause of redesign and apply the patterns that help you avoid it. • Consider what should be variable in your design.

  24. But Where Do Surrogates Fit into This? • Proxy Pattern • Subject => Node • Proxy => Link • Real Subject => ?

  25. But Where Do Surrogates Fit Into This?

More Related