Prefer class hierarchies to tagged classes. (Item 20, 21, 22) презентация

Слайд 2

Tagged class –

instances come in two or more flavors;
contain a tag field indicating

the flavor of the instance

Слайд 4

Tagged classes:

Bad readability
Spend to much memory (contain fields belonging to other flavors)
Fields can’t

be final (constructors don’t initialize irrelevant fields)
Constructors must set the tag field and initialize the right data fields – compiler can’t control this.
Type doesn’t gives a clue to its flavor.

Слайд 5

A tagged class is just imitation of a class hierarchy

Refactor tagged class into

a hierarchy

Слайд 7

Item 21: Use function objects to represent strategies

Слайд 8

Function object is –

An instance of a class that exports exactly one method

performing operations on other objects, passed explicitly to the method
Example: Comparator

Слайд 9

Concrete strategy

Comparator is concrete strategy for comparison
Typical concrete strategy classes are stateless: has no

fields => all instances of the class are functionally equivalent => should be a singleton

Слайд 10

Concrete strategy classes are often declared as anonymous classes

Note that using an anonymous

class will create a new instance each time the call is executed

If concrete strategy used once – anonymous class
If concrete strategy is designed for repeated use:
Implementation – private static member class
Export – final public static field
Type – strategy interface

Слайд 11

Item 22: Favor static member classes over nonstatic

Слайд 12

Nested classes

Static member classes

Nonstatic member classes

Anonymous classes

Local classes

Inner classes

Слайд 13

If you declare a member class that does not require access to an

enclosing instance – always put the static modifier in its declaration
Nonstatic static member class has reference to enclosing instance:
it costs time and resources;
it makes enclosing instance not available for garbage collection.
Имя файла: Prefer-class-hierarchies-to-tagged-classes.-(Item-20,-21,-22).pptx
Количество просмотров: 57
Количество скачиваний: 0