summaryrefslogtreecommitdiff
path: root/BJC-Utils2
diff options
context:
space:
mode:
Diffstat (limited to 'BJC-Utils2')
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/funcutils/IBuilder.java32
1 files changed, 32 insertions, 0 deletions
diff --git a/BJC-Utils2/src/main/java/bjc/utils/funcutils/IBuilder.java b/BJC-Utils2/src/main/java/bjc/utils/funcutils/IBuilder.java
new file mode 100644
index 0000000..a55e8e0
--- /dev/null
+++ b/BJC-Utils2/src/main/java/bjc/utils/funcutils/IBuilder.java
@@ -0,0 +1,32 @@
+package bjc.utils.funcutils;
+
+/**
+ * Generic interface for objects that implement the builder pattern
+ *
+ * @author ben
+ *
+ * @param <E>
+ * The type of object being built
+ */
+public interface IBuilder<E> {
+ /**
+ * Build the object this builder is building
+ *
+ * @return The built object
+ * @throws IllegalStateException
+ * if the data in the builder cannot be built into its
+ * corresponding object at this point in time
+ */
+ public E build();
+
+ /**
+ * Reset the state of this builder to its initial state
+ *
+ * @throws UnsupportedOperationException
+ * if the builder doesn't support resetting its state
+ */
+ public default void reset() {
+ throw new UnsupportedOperationException(
+ "Builder doesn't support state resetting");
+ }
+}