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