Marker interface pattern: Difference between revisions

Content deleted Content added
Citation bot (talk | contribs)
Alter: title. Add: edition. | Use this bot. Report bugs. | Suggested by Whoop whoop pull up | #UCB_webform 172/1169
Adding short description: "Design pattern in computer science"
 
(4 intermediate revisions by 4 users not shown)
Line 1:
{{Short description|Design pattern in computer science}}
{{Refimprove|date=June 2013}}
The '''marker interface pattern''' is a [[design pattern (computer science)|design pattern]] in [[computer science]], used with languages that provide run-time type information about objects. It provides a means to associate metadata with a class where the language does not have explicit support for such metadata.
Line 27 ⟶ 28:
 
==Critique==
A majorOne problem with marker interfaces is that, since an interface defines a contract for implementing classes, and that contract is inherited by all subclasses., Thisa meansmarker thatcannot you cannotbe "unimplementunimplemented" a marker. In the example given, if you create aany subclass that you do not wantintended tofor serializeserialization (perhaps because it depends on transient state), you must resort to explicitly throwingthrow <code>NotSerializableException</code> exceptions (per <code>ObjectOutputStream</code> docs).
 
Another solution is for the language to support [[metadata]] directly:
Line 40 ⟶ 41:
 
== Further reading ==
''Effective Java''<ref>{{Cite book |last=Bloch |first=Joshua |url=https://www.worldcat.org/oclc/1018432176 |title=Effective Java |date=2018 |isbn=978-0-13-468599-1 |edition=Third |___location=Boston |oclc=1018432176}}</ref> by [[Joshua Bloch]].
 
{{Design Patterns patterns}}