1.Singleton (single case)
Function: Ensure that the class has only one instance; provide a global access point
Reflected in JDK:
(1) Runtime
(2) NumberFormat
2.Factory (static factory)
Function :
(1) Create objects instead of constructors
(2) Method names are clearer than constructors
Reflected in JDK:
(1) Integer.valueOf
(2) Class.forName
3.Factory Method )
Function: Subclasses decide which class to instantiate
Reflected in JDK: Collection.iterator method
4.Abstract Factory (Abstract Factory)
Function: Create a certain type of object
Reflected in JDK:
(1 ) java.sql package
(2) UIManager (swing appearance)
5.Builder (constructor)
Function:
(1) Put the construction logic into a separate class
(2) Separate the construction logic of the class And performance
Reflected in JDK: DocumentBuilder (org.w3c.dom)
6.Prototype (prototype)
Function:
(1) Copy object
(2) Shallow copy, deep copy
Reflected in JDK: Object. clone; Cloneable
7.Adapter(Adapter)
Function: Make incompatible interfaces compatible
Reflected in JDK:
(1)java.io.InputStreamReader(InputStream)
(2)java.io.OutputStreamWriter( OutputStream)
8.Bridge (Bridge)
Function: Separate the abstract part from its implementation part so that they can all change independently
Reflected in JDK: Handler and Formatter in java.util.logging
9 .Composite (combination)
Function: Treat combined objects and independent objects consistently
Reflected in JDK:
(1) org.w3c.dom
(2) javax.swing.JComponent#add(Component)
10 .Decorator (decorator)
Function: Add new functions to classes; prevent the explosive growth caused by class inheritance
Reflected in JDK:
(1) java.io package
(2) java.util.Collections#synchronizedList (List)
11. Façade (Appearance)
Function:
(1) Encapsulate a set of interactive classes and provide consistent external interfaces
(2) Encapsulate subsystems and simplify subsystem calls
Reflected in JDK: java .util.logging package
12.Flyweight (flyweight)
Function: shared objects, saving memory
Reflected in JDK:
(1) Integer.valueOf(int i); Character.valueOf(char c)
(2) String constant pool
14. Proxy (proxy)
Function:
(1) Transparently call the proxy object without knowing the complex implementation details
(2) Increase the function of the proxy class
Reflected in JDK: dynamic Agent; RMI
15.Iterator (Iterator)
Function: Separate the iteration of the collection from the collection itself
Reflected in JDK: Iterator, Enumeration interface
16.Observer (Observer)
Function: Notification Object status changes are reflected in JDK:
(1) java.util.Observer, Observable
(2) Listener in Swing
Function: Used to coordinate the operations of multiple classes
Reflected in JDK: Swing's ButtonGroup
Function: Define the structure of the algorithm, subclasses only implement different parts
Reflected in JDK: ThreadPoolExecutor.Worker
Function: Provide different algorithms
Reflected in JDK: Four rejection strategies in ThreadPoolExecutor
Function: The request will be processed by the object on the chain, but the client I don’t know which objects the request will be processed by
Reflected in JDK:
(1) java.util.logging.Logger will delegate the log to the parent logger
(2) ClassLoader’s delegation model
Function:
(1) Encapsulate operations to make the interface consistent
(2) Decouple the caller and receiver in space and time
Reflected in JDK: Runnable; Callable; ThreadPoolExecutor
Function: No need to check for null every time, treat null value as if it were an object with the same interface
Reflected in JDK: Collections.EMPTY_LIST
Function: Use a set of classes to represent a certain One rule
Reflected in JDK: java.util.regex.Pattern
Class diagram: four arithmetic operations