blob: 4029800017df51f898f53ddb5fd3d209993ef226 [file] [log] [blame]
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (17) -->
<title>Glossary (Apache Calcite API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="description" content="declaration: package: org.apache.calcite.util, interface: Glossary">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
<script type="text/javascript" src="../../../../script-dir/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var pathtoroot = "../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<div class="about-language"><b>Apache Calcite</b></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div>
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li>Method</li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li>Method</li>
</ul>
</div>
<div class="nav-list-search"><label for="search-input">SEARCH:</label>
<input type="text" id="search-input" value="search" disabled="disabled">
<input type="reset" id="reset-button" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.calcite.util</a></div>
<h1 title="Interface Glossary" class="title">Interface Glossary</h1>
</div>
<section class="class-description" id="class-description">
<hr>
<div class="type-signature"><span class="modifiers">public interface </span><span class="element-name type-name-label">Glossary</span></div>
<div class="block">A collection of terms.
<p>(This is not a real class. It is here so that terms which do not map to
classes can be referenced in Javadoc.)</p></div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>static final @Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></div>
<div class="col-second even-row-color"><code><a href="#ABSTRACT_FACTORY_PATTERN" class="member-name-link">ABSTRACT_FACTORY_PATTERN</a></code></div>
<div class="col-last even-row-color">
<div class="block">Provide an interface for creating families of related or dependent
objects without specifying their concrete classes.</div>
</div>
<div class="col-first odd-row-color"><code>static final @Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></div>
<div class="col-second odd-row-color"><code><a href="#ADAPTER_PATTERN" class="member-name-link">ADAPTER_PATTERN</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Convert the interface of a class into another interface clients expect.</div>
</div>
<div class="col-first even-row-color"><code>static final @Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></div>
<div class="col-second even-row-color"><code><a href="#BRIDGE_PATTERN" class="member-name-link">BRIDGE_PATTERN</a></code></div>
<div class="col-last even-row-color">
<div class="block">Decouple an abstraction from its implementation so that the two can very
independently.</div>
</div>
<div class="col-first odd-row-color"><code>static final @Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></div>
<div class="col-second odd-row-color"><code><a href="#BUILDER_PATTERN" class="member-name-link">BUILDER_PATTERN</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Separate the construction of a complex object from its representation so
that the same construction process can create different representations.</div>
</div>
<div class="col-first even-row-color"><code>static final @Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></div>
<div class="col-second even-row-color"><code><a href="#CHAIN_OF_RESPONSIBILITY_PATTERN" class="member-name-link">CHAIN_OF_RESPONSIBILITY_PATTERN</a></code></div>
<div class="col-last even-row-color">
<div class="block">Avoid coupling the sender of a request to its receiver by giving more
than one object a chance to handle the request.</div>
</div>
<div class="col-first odd-row-color"><code>static final @Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></div>
<div class="col-second odd-row-color"><code><a href="#COMMAND_PATTERN" class="member-name-link">COMMAND_PATTERN</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Encapsulate a request as an object, thereby letting you parameterize
clients with different requests, queue or log requests, and support
undoable operations.</div>
</div>
<div class="col-first even-row-color"><code>static final @Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></div>
<div class="col-second even-row-color"><code><a href="#COMPOSITE_PATTERN" class="member-name-link">COMPOSITE_PATTERN</a></code></div>
<div class="col-last even-row-color">
<div class="block">Compose objects into tree structures to represent part-whole hierarchies.</div>
</div>
<div class="col-first odd-row-color"><code>static final @Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></div>
<div class="col-second odd-row-color"><code><a href="#DECORATOR_PATTERN" class="member-name-link">DECORATOR_PATTERN</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Attach additional responsibilities to an object dynamically.</div>
</div>
<div class="col-first even-row-color"><code>static final @Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></div>
<div class="col-second even-row-color"><code><a href="#FACADE_PATTERN" class="member-name-link">FACADE_PATTERN</a></code></div>
<div class="col-last even-row-color">
<div class="block">Provide a unified interface to a set of interfaces in a subsystem.</div>
</div>
<div class="col-first odd-row-color"><code>static final @Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></div>
<div class="col-second odd-row-color"><code><a href="#FACTORY_METHOD_PATTERN" class="member-name-link">FACTORY_METHOD_PATTERN</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Define an interface for creating an object, but let subclasses decide
which class to instantiate.</div>
</div>
<div class="col-first even-row-color"><code>static final @Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></div>
<div class="col-second even-row-color"><code><a href="#FLYWEIGHT_PATTERN" class="member-name-link">FLYWEIGHT_PATTERN</a></code></div>
<div class="col-last even-row-color">
<div class="block">Use sharing to support large numbers of fine-grained objects efficiently.</div>
</div>
<div class="col-first odd-row-color"><code>static final @Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></div>
<div class="col-second odd-row-color"><code><a href="#INTERPRETER_PATTERN" class="member-name-link">INTERPRETER_PATTERN</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Given a language, define a representation for its grammar along with an
interpreter that uses the representation to interpret sentences in the
language.</div>
</div>
<div class="col-first even-row-color"><code>static final @Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></div>
<div class="col-second even-row-color"><code><a href="#ITERATOR_PATTERN" class="member-name-link">ITERATOR_PATTERN</a></code></div>
<div class="col-last even-row-color">
<div class="block">Provide a way to access the elements of an aggregate object sequentially
without exposing its underlying representation.</div>
</div>
<div class="col-first odd-row-color"><code>static final @Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></div>
<div class="col-second odd-row-color"><code><a href="#MEDIATOR_PATTERN" class="member-name-link">MEDIATOR_PATTERN</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Define an object that encapsulates how a set of objects interact.</div>
</div>
<div class="col-first even-row-color"><code>static final @Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></div>
<div class="col-second even-row-color"><code><a href="#MEMENTO_PATTERN" class="member-name-link">MEMENTO_PATTERN</a></code></div>
<div class="col-last even-row-color">
<div class="block">Without violating encapsulation, capture and externalize an objects's
internal state so that the object can be restored to this state later.</div>
</div>
<div class="col-first odd-row-color"><code>static final @Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></div>
<div class="col-second odd-row-color"><code><a href="#OBSERVER_PATTERN" class="member-name-link">OBSERVER_PATTERN</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Define a one-to-many dependency between objects so that when one object
changes state, all its dependents are notified and updated automatically.</div>
</div>
<div class="col-first even-row-color"><code>static final @Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></div>
<div class="col-second even-row-color"><code><a href="#PATTERN" class="member-name-link">PATTERN</a></code></div>
<div class="col-last even-row-color">
<div class="block">This table shows how and where the Gang of Four patterns are applied.</div>
</div>
<div class="col-first odd-row-color"><code>static final @Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></div>
<div class="col-second odd-row-color"><code><a href="#PROTOTYPE_PATTERN" class="member-name-link">PROTOTYPE_PATTERN</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Specify the kinds of objects to create using a prototypical instance, and
create new objects by copying this prototype.</div>
</div>
<div class="col-first even-row-color"><code>static final @Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></div>
<div class="col-second even-row-color"><code><a href="#PROXY_PATTERN" class="member-name-link">PROXY_PATTERN</a></code></div>
<div class="col-last even-row-color">
<div class="block">Provide a surrogate or placeholder for another object to control access
to it.</div>
</div>
<div class="col-first odd-row-color"><code>static final @Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></div>
<div class="col-second odd-row-color"><code><a href="#SINGLETON_PATTERN" class="member-name-link">SINGLETON_PATTERN</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Ensure a class only has one instance, and provide a global point of
access to it.</div>
</div>
<div class="col-first even-row-color"><code>static final @Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></div>
<div class="col-second even-row-color"><code><a href="#SQL2003" class="member-name-link">SQL2003</a></code></div>
<div class="col-last even-row-color">
<div class="block">The official SQL:2003 standard (ISO/IEC 9075:2003), which is broken up
into numerous parts.</div>
</div>
<div class="col-first odd-row-color"><code>static final @Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></div>
<div class="col-second odd-row-color"><code><a href="#SQL92" class="member-name-link">SQL92</a></code></div>
<div class="col-last odd-row-color">
<div class="block">The official SQL-92 standard (ISO/IEC 9075:1992).</div>
</div>
<div class="col-first even-row-color"><code>static final @Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></div>
<div class="col-second even-row-color"><code><a href="#SQL99" class="member-name-link">SQL99</a></code></div>
<div class="col-last even-row-color">
<div class="block">The official SQL:1999 standard (ISO/IEC 9075:1999), which is broken up
into five parts.</div>
</div>
<div class="col-first odd-row-color"><code>static final @Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></div>
<div class="col-second odd-row-color"><code><a href="#STATE_PATTERN" class="member-name-link">STATE_PATTERN</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Allow an object to alter its behavior when its internal state changes.</div>
</div>
<div class="col-first even-row-color"><code>static final @Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></div>
<div class="col-second even-row-color"><code><a href="#STRATEGY_PATTERN" class="member-name-link">STRATEGY_PATTERN</a></code></div>
<div class="col-last even-row-color">
<div class="block">Define a family of algorithms, encapsulate each one, and make them
interchangeable.</div>
</div>
<div class="col-first odd-row-color"><code>static final @Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></div>
<div class="col-second odd-row-color"><code><a href="#TEMPLATE_METHOD_PATTERN" class="member-name-link">TEMPLATE_METHOD_PATTERN</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Define the skeleton of an algorithm in an operation, deferring some steps
to subclasses.</div>
</div>
<div class="col-first even-row-color"><code>static final @Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></div>
<div class="col-second even-row-color"><code><a href="#VISITOR_PATTERN" class="member-name-link">VISITOR_PATTERN</a></code></div>
<div class="col-last even-row-color">
<div class="block">Represent an operation to be performed on the elements of an object
structure.</div>
</div>
</div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="PATTERN">
<h3>PATTERN</h3>
<div class="member-signature"><span class="modifiers">static final</span>&nbsp;<span class="return-type">@Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></span>&nbsp;<span class="element-name">PATTERN</span></div>
<div class="block"><p>This table shows how and where the Gang of Four patterns are applied.
The table uses information from the GoF book and from a course on
advanced object design taught by Craig Larman.</p>
<p>The patterns are in three groups depicting frequency of use. The
patterns in light green are used
<i>frequently</i>. Those in yellow have
<i>moderate</i> use. Patterns in red are
<i>infrequently</i> used. The GoF column gives the original Gang Of Four
category for the pattern. The Problem and Pattern columns are from
Craig's refinement of the type of problems they apply to and a refinement
of the original three pattern categories.</p>
<table style="border-spacing:0px;padding:3px;border:1px">
<caption>
<a href="http://www.onr.com/user/loeffler/java/references.html#gof">
<b>Gang of Four Patterns</b></a>
</caption>
<tr>
<!-- Headers for each column -->
<th>Pattern Name</th>
<th style="text-align:middle"><a href="#category">GOF Category</a></th>
<th style="text-align:middle">Problem</th>
<th style="text-align:middle">Pattern</th>
<th style="text-align:middle">Often Uses</th>
<th style="text-align:middle">Related To</th>
</tr>
<!-- Frequently used patterns have a lime background -->
<tr>
<td style="background-color:lime"><a href="#AbstractFactoryPattern">Abstract Factory</a>
</td>
<td style="background-color:teal;color:white">Creational</td>
<td>Creating Instances</td>
<td>Class/Interface Definition plus Inheritance</td>
<td><a href="#FactoryMethodPattern">Factory Method</a><br>
<a href="#PrototypePattern">Prototype</a><br>
<a href="#SingletonPattern">Singleton</a> with <a href="#FacadePattern">
Facade</a></td>
<td><a href="#FactoryMethodPattern">Factory Method</a><br>
<a href="#PrototypePattern">Prototype</a><br>
<a href="#SingletonPattern">Singleton</a></td>
</tr>
<tr>
<td style="background-color:lime"><a href="#ObjectAdapterPattern">Object Adapter</a>
</td>
<td style="background-color:silver">Structural</td>
<td>Interface</td>
<td>Wrap One</td>
<td style="text-align:middle">-</td>
<td><a href="#BridgePattern">Bridge</a><br>
<a href="#DecoratorPattern">Decorator</a><br>
<a href="#ProxyPattern">Proxy</a></td>
</tr>
<tr>
<td style="background-color:lime"><a href="#CommandPattern">Command</a></td>
<td style="background-color:maroon;color:white">Behavioral</td>
<td>Organization or Communication of Work<br>
Action/Response</td>
<td>Behavior Objects</td>
<td><a href="#CompositePattern">Composite</a></td>
<td><a href="#CompositePattern">Composite</a><br>
<a href="#MementoPattern">Memento</a><br>
<a href="#PrototypePattern">Prototype</a></td>
</tr>
<tr>
<td style="background-color:lime"><a href="#CompositePattern">Composite</a></td>
<td style="background-color:silver">Structural</td>
<td>Structural Decomposition of Objects or Subsystems</td>
<td>Wrap Many</td>
<td style="text-align:middle">-</td>
<td><a href="#DecoratorPattern">Decorator</a><br>
<a href="#IteratorPattern">Iterator</a><br>
<a href="#VisitorPattern">Visitor</a></td>
</tr>
<tr>
<td style="background-color:lime"><a href="#DecoratorPattern">Decorator</a></td>
<td style="background-color:silver">Structural</td>
<td>Instance Behavior</td>
<td>Wrap One</td>
<td style="text-align:middle">-</td>
<td><a href="#ObjectAdapterPattern">Object Adapter</a><br>
<a href="#CompositePattern">Composite</a><br>
<a href="#StrategyPattern">Strategy</a></td>
</tr>
<tr>
<td style="background-color:lime"><a href="#FacadePattern">Facade</a></td>
<td style="background-color:silver">Structural</td>
<td>Access Control<br>
&nbsp;
<hr>
<p>Structural Decomposition of Objects or Subsystems</td>
<td>Wrap Many</td>
<td><a href="#SingletonPattern">Singleton</a> with <a href="#AbstractFactoryPattern">Abstract Factory</a></td>
<td><a href="#AbstractFactoryPattern">Abstract Factory</a><br>
<a href="#MediatorPattern">Mediator</a></td>
</tr>
<tr>
<td style="background-color:lime"><a href="#FlyweightPattern">Flyweight</a></td>
<td style="background-color:silver">Structural</td>
<td>Shared Resource Handling</td>
<td>Object State or Values</td>
<td style="text-align:middle">-</td>
<td><a href="#SingletonPattern">Singleton</a><br>
<a href="#StatePattern">State</a><br>
<a href="#StrategyPattern">Strategy</a><br>
Shareable</td>
</tr>
<tr>
<td style="background-color:lime"><a href="#IteratorPattern">Iterator</a></td>
<td style="background-color:maroon;color:white">Behavioral</td>
<td>Traversal Algorithm<br>
&nbsp;
<hr>
<p>Access Control</td>
<td>Low Coupling</td>
<td style="text-align:middle">-</td>
<td><a href="#CompositePattern">Composite</a><br>
<a href="#FactoryMethodPattern">Factory Method</a><br>
<a href="#MementoPattern">Memento</a></td>
</tr>
<tr>
<td style="background-color:lime"><a href="#ObserverPattern">Observer</a></td>
<td style="background-color:maroon;color:white">Behavioral</td>
<td>Event Response<br>
&nbsp;
<hr>
<p>Organization or Communication of Work</td>
<td>Low Coupling</td>
<td style="text-align:middle">-</td>
<td><a href="#MediatorPattern">Mediator</a><br>
<a href="#SingletonPattern">Singleton</a></td>
</tr>
<tr>
<td style="background-color:lime"><a href="#ProxyPattern">Proxy</a></td>
<td style="background-color:silver">Structural</td>
<td>Access Control</td>
<td>Wrap One</td>
<td style="text-align:middle">-</td>
<td><a href="#ObjectAdapterPattern">Adapter</a><br>
<a href="#DecoratorPattern">Decorator</a></td>
</tr>
<tr>
<td style="background-color:lime"><a href="#SingletonPattern">Singleton</a></td>
<td style="background-color:teal;color:white">Creational</td>
<td>Access Control</td>
<td>Other</td>
<td style="text-align:middle">-</td>
<td><a href="#AbstractFactoryPattern">Abstract Factory</a><br>
<a href="#BuilderPattern">Builder</a><br>
<a href="#PrototypePattern">Prototype</a></td>
</tr>
<tr>
<td style="background-color:lime"><a href="#StatePattern">State</a></td>
<td style="background-color:maroon;color:white">Behavioral</td>
<td>Instance Behavior</td>
<td>Object State or Values</td>
<td><a href="#FlyweightPattern">Flyweight</a></td>
<td><a href="#FlyweightPattern">Flyweight</a><br>
<a href="#SingletonPattern">Singleton</a></td>
</tr>
<tr>
<td style="background-color:lime"><a href="#StrategyPattern">Strategy</a></td>
<td style="background-color:maroon;color:white">Behavioral</td>
<td>Single Algorithm</td>
<td>Behavior Objects</td>
<td style="text-align:middle">-</td>
<td><a href="#FlyweightPattern">Flyweight</a><br>
<a href="#StatePattern">State</a><br>
<a href="#TemplateMethodPattern">Template Method</a></td>
</tr>
<tr>
<td style="background-color:lime"><a href="#TemplateMethodPattern">Template Method</a>
</td>
<td style="background-color:maroon;color:white">Behavioral</td>
<td>Single Algorithm</td>
<td>Class or Interface Definition plus Inheritance</td>
<td style="text-align:middle">-</td>
<td><a href="#StrategyPattern">Strategy</a></td>
</tr>
<!-- Moderately use patterns have a yellow background -->
<tr>
<td style="background-color:yellow"><a href="#ClassAdapterPattern">Class Adapter</a>
</td>
<td style="background-color:silver">Structural</td>
<td>Interface</td>
<td>Class or Interface Definition plus Inheritance</td>
<td style="text-align:middle">-</td>
<td><a href="#BridgePattern">Bridge</a><br>
<a href="#DecoratorPattern">Decorator</a><br>
<a href="#ProxyPattern">Proxy</a></td>
</tr>
<tr>
<td style="background-color:yellow"><a href="#BridgePattern">Bridge</a></td>
<td style="background-color:silver">Structural</td>
<td>Implementation</td>
<td>Wrap One</td>
<td style="text-align:middle">-</td>
<td><a href="#AbstractFactoryPattern">Abstract Factory</a><br>
<a href="#ClassAdapterPattern">Class Adaptor</a></td>
</tr>
<tr>
<td style="background-color:yellow"><a href="#BuilderPattern">Builder</a></td>
<td style="background-color:teal;color:white">Creational</td>
<td>Creating Structures</td>
<td>Class or Interface Definition plus Inheritance</td>
<td style="text-align:middle">-</td>
<td><a href="#AbstractFactoryPattern">Abstract Factory</a><br>
<a href="#CompositePattern">Composite</a></td>
</tr>
<tr>
<td style="background-color:yellow"><a href="#ChainOfResponsibilityPattern">Chain of
Responsibility</a></td>
<td style="background-color:maroon;color:white">Behavioral</td>
<td>Single Algorithm<br>
&nbsp;
<hr>
<p>Organization or Communication of Work</td>
<td>Low Coupling</td>
<td style="text-align:middle">-</td>
<td><a href="#CompositePattern">Composite</a></td>
</tr>
<tr>
<td style="background-color:yellow"><a href="#FactoryMethodPattern">Factory Method</a>
</td>
<td style="background-color:teal;color:white">Creational</td>
<td>Creating Instances</td>
<td>Class or Interface Definition plus Inheritance</td>
<td><a href="#TemplateMethodPattern">Template Method</a></td>
<td><a href="#AbstractFactoryPattern">Abstract Factory</a><br>
<a href="#TemplateMethodPattern">Template Method</a><br>
<a href="#PrototypePattern">Prototype</a></td>
</tr>
<tr>
<td style="background-color:yellow"><a href="#MediatorPattern">Mediator</a></td>
<td style="background-color:maroon;color:white">Behavioral</td>
<td>Interaction between Objects<br>
&nbsp;
<hr>
<p>Organization or Communication of Work</td>
<td>Low Coupling</td>
<td style="text-align:middle">-</td>
<td><a href="#FacadePattern">Facade</a><br>
<a href="#ObserverPattern">Observer</a></td>
</tr>
<tr>
<td style="background-color:yellow"><a href="#PrototypePattern">Prototype</a></td>
<td style="background-color:teal;color:white">Creational</td>
<td>Creating Instances</td>
<td>Other</td>
<td style="text-align:middle">-</td>
<td><a href="#PrototypePattern">Prototype</a><br>
<a href="#CompositePattern">Composite</a><br>
<a href="#DecoratorPattern">Decorator</a></td>
</tr>
<tr>
<td style="background-color:yellow"><a href="#VisitorPattern">Visitor</a></td>
<td style="background-color:maroon;color:white">Behavioral</td>
<td>Single Algorithm</td>
<td>Behavior Objects</td>
<td style="text-align:middle">-</td>
<td><a href="#CompositePattern">Composite</a><br>
<a href="#VisitorPattern">Visitor</a></td>
</tr>
<!-- Seldom used patterns have a red background -->
<tr>
<td style="background-color:red;color:white"><a href="#InterpreterPattern">
Interpreter</a></td>
<td style="background-color:maroon;color:white">Behavioral</td>
<td>Organization or Communication of Work</td>
<td>Other</td>
<td style="text-align:middle">-</td>
<td><a href="#CompositePattern">Composite</a><br>
<a href="#FlyweightPattern">Flyweight</a><br>
<a href="#IteratorPattern">Iterator</a><br>
<a href="#VisitorPattern">Visitor</a></td>
</tr>
<tr>
<td style="background-color:red;color:white"><a href="#MementoPattern">
Memento</a></td>
<td style="background-color:maroon;color:white">Behavioral</td>
<td>Instance Management</td>
<td>Object State or Values</td>
<td style="text-align:middle">-</td>
<td><a href="#CommandPattern">Command</a><br>
<a href="#IteratorPattern">Iterator</a></td>
</tr>
</table></div>
</section>
</li>
<li>
<section class="detail" id="ABSTRACT_FACTORY_PATTERN">
<h3>ABSTRACT_FACTORY_PATTERN</h3>
<div class="member-signature"><span class="modifiers">static final</span>&nbsp;<span class="return-type">@Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></span>&nbsp;<span class="element-name">ABSTRACT_FACTORY_PATTERN</span></div>
<div class="block">Provide an interface for creating families of related or dependent
objects without specifying their concrete classes. (See <a href="http://c2.com/cgi/wiki?AbstractFactoryPattern">GoF</a>.)</div>
</section>
</li>
<li>
<section class="detail" id="BUILDER_PATTERN">
<h3>BUILDER_PATTERN</h3>
<div class="member-signature"><span class="modifiers">static final</span>&nbsp;<span class="return-type">@Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></span>&nbsp;<span class="element-name">BUILDER_PATTERN</span></div>
<div class="block">Separate the construction of a complex object from its representation so
that the same construction process can create different representations.
(See <a href="http://c2.com/cgi/wiki?BuilderPattern">GoF</a>.)</div>
</section>
</li>
<li>
<section class="detail" id="FACTORY_METHOD_PATTERN">
<h3>FACTORY_METHOD_PATTERN</h3>
<div class="member-signature"><span class="modifiers">static final</span>&nbsp;<span class="return-type">@Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></span>&nbsp;<span class="element-name">FACTORY_METHOD_PATTERN</span></div>
<div class="block">Define an interface for creating an object, but let subclasses decide
which class to instantiate. Lets a class defer instantiation to
subclasses. (See <a href="http://c2.com/cgi/wiki?FactoryMethodPattern">
GoF</a>.)</div>
</section>
</li>
<li>
<section class="detail" id="PROTOTYPE_PATTERN">
<h3>PROTOTYPE_PATTERN</h3>
<div class="member-signature"><span class="modifiers">static final</span>&nbsp;<span class="return-type">@Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></span>&nbsp;<span class="element-name">PROTOTYPE_PATTERN</span></div>
<div class="block">Specify the kinds of objects to create using a prototypical instance, and
create new objects by copying this prototype. (See <a href="http://c2.com/cgi/wiki?PrototypePattern">GoF</a>.)</div>
</section>
</li>
<li>
<section class="detail" id="SINGLETON_PATTERN">
<h3>SINGLETON_PATTERN</h3>
<div class="member-signature"><span class="modifiers">static final</span>&nbsp;<span class="return-type">@Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></span>&nbsp;<span class="element-name">SINGLETON_PATTERN</span></div>
<div class="block">Ensure a class only has one instance, and provide a global point of
access to it. (See <a href="http://c2.com/cgi/wiki?SingletonPattern">
GoF</a>.)
<p>Note that a common way of implementing a singleton, the so-called <a href="http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html">
double-checked locking pattern</a>, is fatally flawed in Java. Don't use
it!</p></div>
</section>
</li>
<li>
<section class="detail" id="ADAPTER_PATTERN">
<h3>ADAPTER_PATTERN</h3>
<div class="member-signature"><span class="modifiers">static final</span>&nbsp;<span class="return-type">@Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></span>&nbsp;<span class="element-name">ADAPTER_PATTERN</span></div>
<div class="block">Convert the interface of a class into another interface clients expect.
Lets classes work together that couldn't otherwise because of
incompatible interfaces. (See <a href="http://c2.com/cgi/wiki?AdapterPattern">GoF</a>.)</div>
</section>
</li>
<li>
<section class="detail" id="BRIDGE_PATTERN">
<h3>BRIDGE_PATTERN</h3>
<div class="member-signature"><span class="modifiers">static final</span>&nbsp;<span class="return-type">@Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></span>&nbsp;<span class="element-name">BRIDGE_PATTERN</span></div>
<div class="block">Decouple an abstraction from its implementation so that the two can very
independently. (See <a href="http://c2.com/cgi/wiki?BridgePattern">
GoF</a>.)</div>
</section>
</li>
<li>
<section class="detail" id="COMPOSITE_PATTERN">
<h3>COMPOSITE_PATTERN</h3>
<div class="member-signature"><span class="modifiers">static final</span>&nbsp;<span class="return-type">@Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></span>&nbsp;<span class="element-name">COMPOSITE_PATTERN</span></div>
<div class="block">Compose objects into tree structures to represent part-whole hierarchies.
Lets clients treat individual objects and compositions of objects
uniformly. (See <a href="http://c2.com/cgi/wiki?CompositePattern">
GoF</a>.)</div>
</section>
</li>
<li>
<section class="detail" id="DECORATOR_PATTERN">
<h3>DECORATOR_PATTERN</h3>
<div class="member-signature"><span class="modifiers">static final</span>&nbsp;<span class="return-type">@Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></span>&nbsp;<span class="element-name">DECORATOR_PATTERN</span></div>
<div class="block">Attach additional responsibilities to an object dynamically. Provides a
flexible alternative to subclassing for extending functionality. (See <a href="http://c2.com/cgi/wiki?DecoratorPattern">GoF</a>.)</div>
</section>
</li>
<li>
<section class="detail" id="FACADE_PATTERN">
<h3>FACADE_PATTERN</h3>
<div class="member-signature"><span class="modifiers">static final</span>&nbsp;<span class="return-type">@Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></span>&nbsp;<span class="element-name">FACADE_PATTERN</span></div>
<div class="block">Provide a unified interface to a set of interfaces in a subsystem.
Defines a higher-level interface that makes the subsystem easier to use.
(See <a href="http://c2.com/cgi/wiki?FacadePattern">GoF</a>.)</div>
</section>
</li>
<li>
<section class="detail" id="FLYWEIGHT_PATTERN">
<h3>FLYWEIGHT_PATTERN</h3>
<div class="member-signature"><span class="modifiers">static final</span>&nbsp;<span class="return-type">@Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></span>&nbsp;<span class="element-name">FLYWEIGHT_PATTERN</span></div>
<div class="block">Use sharing to support large numbers of fine-grained objects efficiently.
(See <a href="http://c2.com/cgi/wiki?FlyweightPattern">GoF</a>.)</div>
</section>
</li>
<li>
<section class="detail" id="PROXY_PATTERN">
<h3>PROXY_PATTERN</h3>
<div class="member-signature"><span class="modifiers">static final</span>&nbsp;<span class="return-type">@Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></span>&nbsp;<span class="element-name">PROXY_PATTERN</span></div>
<div class="block">Provide a surrogate or placeholder for another object to control access
to it. (See <a href="http://c2.com/cgi/wiki?ProxyPattern">GoF</a>.)</div>
</section>
</li>
<li>
<section class="detail" id="CHAIN_OF_RESPONSIBILITY_PATTERN">
<h3>CHAIN_OF_RESPONSIBILITY_PATTERN</h3>
<div class="member-signature"><span class="modifiers">static final</span>&nbsp;<span class="return-type">@Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></span>&nbsp;<span class="element-name">CHAIN_OF_RESPONSIBILITY_PATTERN</span></div>
<div class="block">Avoid coupling the sender of a request to its receiver by giving more
than one object a chance to handle the request. Chain the receiving
objects and pass the request along the chain until an object handles it.
(See <a href="http://c2.com/cgi/wiki?ChainOfResponsibilityPattern">
GoF</a>.)</div>
</section>
</li>
<li>
<section class="detail" id="COMMAND_PATTERN">
<h3>COMMAND_PATTERN</h3>
<div class="member-signature"><span class="modifiers">static final</span>&nbsp;<span class="return-type">@Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></span>&nbsp;<span class="element-name">COMMAND_PATTERN</span></div>
<div class="block">Encapsulate a request as an object, thereby letting you parameterize
clients with different requests, queue or log requests, and support
undoable operations. (See <a href="http://c2.com/cgi/wiki?CommandPattern">GoF</a>.)</div>
</section>
</li>
<li>
<section class="detail" id="INTERPRETER_PATTERN">
<h3>INTERPRETER_PATTERN</h3>
<div class="member-signature"><span class="modifiers">static final</span>&nbsp;<span class="return-type">@Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></span>&nbsp;<span class="element-name">INTERPRETER_PATTERN</span></div>
<div class="block">Given a language, define a representation for its grammar along with an
interpreter that uses the representation to interpret sentences in the
language. (See <a href="http://c2.com/cgi/wiki?InterpreterPattern">
GoF</a>.)</div>
</section>
</li>
<li>
<section class="detail" id="ITERATOR_PATTERN">
<h3>ITERATOR_PATTERN</h3>
<div class="member-signature"><span class="modifiers">static final</span>&nbsp;<span class="return-type">@Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></span>&nbsp;<span class="element-name">ITERATOR_PATTERN</span></div>
<div class="block">Provide a way to access the elements of an aggregate object sequentially
without exposing its underlying representation. (See <a href="http://c2.com/cgi/wiki?IteratorPattern">GoF</a>.)</div>
</section>
</li>
<li>
<section class="detail" id="MEDIATOR_PATTERN">
<h3>MEDIATOR_PATTERN</h3>
<div class="member-signature"><span class="modifiers">static final</span>&nbsp;<span class="return-type">@Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></span>&nbsp;<span class="element-name">MEDIATOR_PATTERN</span></div>
<div class="block">Define an object that encapsulates how a set of objects interact.
Promotes loose coupling by keeping objects from referring to each other
explicitly, and it lets you vary their interaction independently. (See <a href="http://c2.com/cgi/wiki?MediatorPattern">GoF</a>.)</div>
</section>
</li>
<li>
<section class="detail" id="MEMENTO_PATTERN">
<h3>MEMENTO_PATTERN</h3>
<div class="member-signature"><span class="modifiers">static final</span>&nbsp;<span class="return-type">@Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></span>&nbsp;<span class="element-name">MEMENTO_PATTERN</span></div>
<div class="block">Without violating encapsulation, capture and externalize an objects's
internal state so that the object can be restored to this state later.
(See <a href="http://c2.com/cgi/wiki?MementoPattern">GoF</a>.)</div>
</section>
</li>
<li>
<section class="detail" id="OBSERVER_PATTERN">
<h3>OBSERVER_PATTERN</h3>
<div class="member-signature"><span class="modifiers">static final</span>&nbsp;<span class="return-type">@Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></span>&nbsp;<span class="element-name">OBSERVER_PATTERN</span></div>
<div class="block">Define a one-to-many dependency between objects so that when one object
changes state, all its dependents are notified and updated automatically.
(See <a href="http://c2.com/cgi/wiki?ObserverPattern">GoF</a>.)</div>
</section>
</li>
<li>
<section class="detail" id="STATE_PATTERN">
<h3>STATE_PATTERN</h3>
<div class="member-signature"><span class="modifiers">static final</span>&nbsp;<span class="return-type">@Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></span>&nbsp;<span class="element-name">STATE_PATTERN</span></div>
<div class="block">Allow an object to alter its behavior when its internal state changes.
The object will appear to change its class. (See <a href="http://c2.com/cgi/wiki?StatePattern">GoF</a>.)</div>
</section>
</li>
<li>
<section class="detail" id="STRATEGY_PATTERN">
<h3>STRATEGY_PATTERN</h3>
<div class="member-signature"><span class="modifiers">static final</span>&nbsp;<span class="return-type">@Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></span>&nbsp;<span class="element-name">STRATEGY_PATTERN</span></div>
<div class="block">Define a family of algorithms, encapsulate each one, and make them
interchangeable. Lets the algorithm vary independently from clients that
use it. (See <a href="http://c2.com/cgi/wiki?StrategyPattern">GoF</a>.)</div>
</section>
</li>
<li>
<section class="detail" id="TEMPLATE_METHOD_PATTERN">
<h3>TEMPLATE_METHOD_PATTERN</h3>
<div class="member-signature"><span class="modifiers">static final</span>&nbsp;<span class="return-type">@Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></span>&nbsp;<span class="element-name">TEMPLATE_METHOD_PATTERN</span></div>
<div class="block">Define the skeleton of an algorithm in an operation, deferring some steps
to subclasses. Lets subclasses redefine certain steps of an algorithm
without changing the algorithm's structure. (See <a href="http://c2.com/cgi/wiki?TemplateMethodPattern">GoF</a>.)</div>
</section>
</li>
<li>
<section class="detail" id="VISITOR_PATTERN">
<h3>VISITOR_PATTERN</h3>
<div class="member-signature"><span class="modifiers">static final</span>&nbsp;<span class="return-type">@Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></span>&nbsp;<span class="element-name">VISITOR_PATTERN</span></div>
<div class="block">Represent an operation to be performed on the elements of an object
structure. Lets you define a new operation without changing the classes
of the elements on which it operates. (See <a href="http://c2.com/cgi/wiki?VisitorPattern">GoF</a>.)</div>
</section>
</li>
<li>
<section class="detail" id="SQL92">
<h3>SQL92</h3>
<div class="member-signature"><span class="modifiers">static final</span>&nbsp;<span class="return-type">@Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></span>&nbsp;<span class="element-name">SQL92</span></div>
<div class="block">The official SQL-92 standard (ISO/IEC 9075:1992). To reference this
standard from methods that implement its rules, use the &#64;sql.92
custom block tag in Javadoc comments; for the tag body, use the format
<code>&lt;SectionId&gt; [ ItemType &lt;ItemId&gt; ]</code>, where
<ul>
<li><code>SectionId</code> is the numbered or named section in the table
of contents, e.g. "Section 4.18.9" or "Annex A"
<li><code>ItemType</code> is one of { Table, Syntax Rule, Access Rule,
General Rule, or Leveling Rule }
<li><code>ItemId</code> is a dotted path expression to the specific item
</ul>
<p>For example,
<blockquote><pre><code>&#64;sql.92 Section 11.4 Syntax Rule 7.c
</code></pre></blockquote>
<p>is a well-formed reference to the rule for the default character set to
use for column definitions of character type.
<p>Note that this tag is a block tag (like &#64;see) and cannot be used
inline.</div>
</section>
</li>
<li>
<section class="detail" id="SQL99">
<h3>SQL99</h3>
<div class="member-signature"><span class="modifiers">static final</span>&nbsp;<span class="return-type">@Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></span>&nbsp;<span class="element-name">SQL99</span></div>
<div class="block">The official SQL:1999 standard (ISO/IEC 9075:1999), which is broken up
into five parts. To reference this standard from methods that implement
its rules, use the &#64;sql.99 custom block tag in Javadoc comments; for
the tag body, use the format <code>&lt;PartId&gt; &lt;SectionId&gt; [
ItemType &lt;ItemId&gt; ]</code>, where
<ul>
<li><code>PartId</code> is the numbered part (up to Part 5)
<li><code>SectionId</code> is the numbered or named section in the part's
table of contents, e.g. "Section 4.18.9" or "Annex A"
<li><code>ItemType</code> is one of { Table, Syntax Rule, Access Rule,
General Rule, or Conformance Rule }
<li><code>ItemId</code> is a dotted path expression to the specific item
</ul>
<p>For example,
<blockquote><pre><code>&#64;sql.99 Part 2 Section 11.4 Syntax Rule 7.b
</code></pre></blockquote>
<p>is a well-formed reference to the rule for the default character set to
use for column definitions of character type.
<p>Note that this tag is a block tag (like &#64;see) and cannot be used
inline.</div>
</section>
</li>
<li>
<section class="detail" id="SQL2003">
<h3>SQL2003</h3>
<div class="member-signature"><span class="modifiers">static final</span>&nbsp;<span class="return-type">@Nullable <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></span>&nbsp;<span class="element-name">SQL2003</span></div>
<div class="block">The official SQL:2003 standard (ISO/IEC 9075:2003), which is broken up
into numerous parts. To reference this standard from methods that
implement its rules, use the &#64;sql.2003 custom block tag in Javadoc
comments; for the tag body, use the format <code>&lt;PartId&gt;
&lt;SectionId&gt; [ ItemType &lt;ItemId&gt; ]</code>, where
<ul>
<li><code>PartId</code> is the numbered part
<li><code>SectionId</code> is the numbered or named section in the part's
table of contents, e.g. "Section 4.11.2" or "Annex A"
<li><code>ItemType</code> is one of { Table, Syntax Rule, Access Rule,
General Rule, or Conformance Rule }
<li><code>ItemId</code> is a dotted path expression to the specific item
</ul>
<p>For example,
<blockquote><pre><code>&#64;sql.2003 Part 2 Section 11.4 Syntax Rule 10.b
</code></pre></blockquote>
<p>is a well-formed reference to the rule for the default character set to
use for column definitions of character type.
<p>Note that this tag is a block tag (like &#64;see) and cannot be used
inline.</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
<footer role="contentinfo">
<hr>
<p class="legal-copy"><small>Copyright &copy; 2012-2023 Apache Software Foundation. All Rights Reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>