diff --git a/Homeworks/Answer.md b/Homeworks/Answer.md
new file mode 100644
index 0000000..8be94e2
--- /dev/null
+++ b/Homeworks/Answer.md
@@ -0,0 +1,19 @@
+1. Homework1
+Bridge pattern: folder bridge
+Shape có 2 loại thể hiện là: Triangle, Circle
+Color có 2 loại thể hiện là: GreenColor, BlueColor
+Theo bridge pattern:
+- Abstraction: Circle, Triangle
+- Implementation: GreenColor, Bluecolor
+Absraction sẽ sử dụng 1 trong các Implementation để tô màu cho Shape
+
+Null Object Pattern: folder null_obejct_pattern
+Nếu không có subscription -> Return Nosubscription.new
+
+Factory Method: folder factory_method
+- Creator: Shape
+- Creator implementation: Circle, Rectangle, Square
+- Factory: ShapeFactory
+Khi muốn khởi tạo Circle, Rectangle, Square chỉ cần khởi tạo qua ShapeFactory
+VD: new Shape("CIRCLE")
+-> "creating objects without having to specify the exact class of the object that will be created"
diff --git a/Homeworks/bridge/BlueColor.java b/Homeworks/bridge/BlueColor.java
new file mode 100644
index 0000000..4e00be7
--- /dev/null
+++ b/Homeworks/bridge/BlueColor.java
@@ -0,0 +1,4 @@
+public class BlueColor implements Color{
+ public void fillColor(){
+ }
+}
diff --git a/Homeworks/bridge/Circle.java b/Homeworks/bridge/Circle.java
new file mode 100644
index 0000000..9982d64
--- /dev/null
+++ b/Homeworks/bridge/Circle.java
@@ -0,0 +1,4 @@
+public class Circle extends Shape{
+ public void get() {
+ }
+}
diff --git a/Homeworks/bridge/Color.java b/Homeworks/bridge/Color.java
new file mode 100644
index 0000000..f9e478b
--- /dev/null
+++ b/Homeworks/bridge/Color.java
@@ -0,0 +1,3 @@
+public interface Color {
+ public void fillColor();
+}
diff --git a/Homeworks/bridge/GreenColor.java b/Homeworks/bridge/GreenColor.java
new file mode 100644
index 0000000..be2a904
--- /dev/null
+++ b/Homeworks/bridge/GreenColor.java
@@ -0,0 +1,5 @@
+public class GreenColor implements Color{
+ public void fillColor(){
+
+ }
+}
diff --git a/Homeworks/bridge/Shape.java b/Homeworks/bridge/Shape.java
new file mode 100644
index 0000000..198aea4
--- /dev/null
+++ b/Homeworks/bridge/Shape.java
@@ -0,0 +1,13 @@
+public class Shape {
+ private Object implementation;
+
+ public Shape(Object implementation) {
+ this.implementation = implementation;
+ }
+
+ public void paint() {
+ }
+
+ public void getColor() {
+ }
+}
diff --git a/Homeworks/bridge/Triangle.java b/Homeworks/bridge/Triangle.java
new file mode 100644
index 0000000..cff033f
--- /dev/null
+++ b/Homeworks/bridge/Triangle.java
@@ -0,0 +1,4 @@
+public class Triangle extends Shape{
+ public void get() {
+ }
+}
diff --git a/Homeworks/bridge/bridge.png b/Homeworks/bridge/bridge.png
new file mode 100644
index 0000000..fe59090
Binary files /dev/null and b/Homeworks/bridge/bridge.png differ
diff --git a/Homeworks/bridge/bridge.uml b/Homeworks/bridge/bridge.uml
new file mode 100644
index 0000000..b7859a0
--- /dev/null
+++ b/Homeworks/bridge/bridge.uml
@@ -0,0 +1,54 @@
+
+
+ JAVA
+
+
+ jdk
+ Circle
+ java
+ Shape
+ BlueColor
+ Color
+ Triangle
+ sun
+ GreenColor
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+ Constructors
+ Properties
+ Fields
+
+ All
+ private
+
+
diff --git a/Homeworks/factory_method/Circle.java b/Homeworks/factory_method/Circle.java
new file mode 100644
index 0000000..c3947f1
--- /dev/null
+++ b/Homeworks/factory_method/Circle.java
@@ -0,0 +1,5 @@
+public class Circle implements Shape {
+ public void draw() {
+ System.out.println("Circle");
+ }
+}
diff --git a/Homeworks/factory_method/Rectangle.java b/Homeworks/factory_method/Rectangle.java
new file mode 100644
index 0000000..d3c22fb
--- /dev/null
+++ b/Homeworks/factory_method/Rectangle.java
@@ -0,0 +1,5 @@
+public class Rectangle implements Shape {
+ public void draw() {
+ System.out.println("Shape");
+ }
+}
diff --git a/Homeworks/factory_method/Shape.java b/Homeworks/factory_method/Shape.java
new file mode 100644
index 0000000..ab64a81
--- /dev/null
+++ b/Homeworks/factory_method/Shape.java
@@ -0,0 +1,3 @@
+public interface Shape {
+ void draw();
+}
diff --git a/Homeworks/factory_method/ShapeFactory.java b/Homeworks/factory_method/ShapeFactory.java
new file mode 100644
index 0000000..0dd878e
--- /dev/null
+++ b/Homeworks/factory_method/ShapeFactory.java
@@ -0,0 +1,18 @@
+public class ShapeFactory {
+ public Shape getShape(String shapeType){
+ if(shapeType == null){
+ return null;
+ }
+ if(shapeType.equalsIgnoreCase("CIRCLE")){
+ return new Circle();
+
+ } else if(shapeType.equalsIgnoreCase("RECTANGLE")){
+ return new Rectangle();
+
+ } else if(shapeType.equalsIgnoreCase("SQUARE")){
+ return new Square();
+ }
+
+ return null;
+ }
+}
diff --git a/Homeworks/factory_method/Square.java b/Homeworks/factory_method/Square.java
new file mode 100644
index 0000000..d586d08
--- /dev/null
+++ b/Homeworks/factory_method/Square.java
@@ -0,0 +1,5 @@
+public class Square implements Shape {
+ public void draw() {
+ System.out.println("Square");
+ }
+}
diff --git a/Homeworks/factory_method/factory_method.png b/Homeworks/factory_method/factory_method.png
new file mode 100644
index 0000000..e4238bf
Binary files /dev/null and b/Homeworks/factory_method/factory_method.png differ
diff --git a/Homeworks/factory_method/factory_method.uml b/Homeworks/factory_method/factory_method.uml
new file mode 100644
index 0000000..57a2682
--- /dev/null
+++ b/Homeworks/factory_method/factory_method.uml
@@ -0,0 +1,52 @@
+
+
+ JAVA
+
+
+ META-INF
+ com
+ jdk
+ Circle
+ Shape
+ java
+ org
+ javax
+ Rectangle
+ ShapeFactory
+ Square
+ sun
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ META-INF
+
+
+ Fields
+ Constructors
+ Methods
+ Properties
+ Inner Classes
+
+ All
+ public
+
+
diff --git a/Homeworks/null_object_pattern/no_subscription.rb b/Homeworks/null_object_pattern/no_subscription.rb
new file mode 100644
index 0000000..0415f2c
--- /dev/null
+++ b/Homeworks/null_object_pattern/no_subscription.rb
@@ -0,0 +1,13 @@
+class NoSubscription
+ def charge(credit_card)
+ "No Charge"
+ end
+
+ def price
+ 0
+ end
+
+ def has_mentoring?
+ false
+ end
+end
diff --git a/Homeworks/null_object_pattern/null_object.png b/Homeworks/null_object_pattern/null_object.png
new file mode 100644
index 0000000..e21de12
Binary files /dev/null and b/Homeworks/null_object_pattern/null_object.png differ
diff --git a/Homeworks/null_object_pattern/null_object.uml b/Homeworks/null_object_pattern/null_object.uml
new file mode 100644
index 0000000..e55f647
--- /dev/null
+++ b/Homeworks/null_object_pattern/null_object.uml
@@ -0,0 +1,25 @@
+
+
+ JAVA
+
+
+ User
+ NoSubscription
+
+
+
+
+
+ NoSubscription
+
+
+ Inner Classes
+ Properties
+ Methods
+ Fields
+ Constructors
+
+ All
+ public
+
+
diff --git a/Homeworks/null_object_pattern/user.rb b/Homeworks/null_object_pattern/user.rb
new file mode 100644
index 0000000..2ab5977
--- /dev/null
+++ b/Homeworks/null_object_pattern/user.rb
@@ -0,0 +1,19 @@
+class User
+ attr_accessor :credit_card, :subscription
+
+ def charge
+ subscription.charge credit_card
+ end
+
+ def has_mentoring?
+ subscription.has_mentoring?
+ end
+
+ def price
+ subscription.price
+ end
+
+ def subscription
+ @subscription ||= NoSubscription.new
+ end
+end