read-only interface | has definition A pattern in which an interface is used to restrict which classes have privileges to call update methods of a class | |
has antipatterns making the read only class a subclass of the «Mutable» class, overriding all methods that modify properties, such that they throw an exception | |
has context - You sometimes want certain privileged classes to be able to modify attributes of objects that are otherwise immutable.
| |
has forces | |
has problem How do you create a situation where some classes see a class as read-only (i.e. the class is immutable) whereas others are able to make modifications? | |
has solution - Create a «Mutable» class as you would create any other class, except make sure it is not public; this ensures that it can be accessed only from its package.
- All classes that need to modify the class, often called «Mutator» classes, must be put in this package.
- Then create a public interface we will call the «ReadOnlyInterface», that has only the read-only operations of «Mutable» - i.e. only operations that get its values.
- The «Mutable» class implements the «ReadOnlyInterface».
| |
is a subtopic of 6.11 - The Read-Only Interface Pattern | |
is an instance of design pattern | |
design pattern | has name | |
has references one or more references which indicate who developed or inspired a pattern | |
has related patterns zero or more related design patterns | |
should be illustrated using a simple diagram | |
should be written using a narrative writing style | |
pattern | should be as general as possible | |
should be described in an easy-to-understand form so that people can determine when and how to use it | |
should contain a solution that has been proven to effectively solve the problem in the indicated context | |