From 50fc5e81d0c12c443b7bcd1bb08a07a73d347e30 Mon Sep 17 00:00:00 2001 From: "luu.hoang.thong" Date: Wed, 25 Oct 2017 14:08:05 +0700 Subject: [PATCH] Group1 --- Homeworks/Answer.md | 19 ++++++ Homeworks/bridge/BlueColor.java | 4 ++ Homeworks/bridge/Circle.java | 4 ++ Homeworks/bridge/Color.java | 3 + Homeworks/bridge/GreenColor.java | 5 ++ Homeworks/bridge/Shape.java | 13 +++++ Homeworks/bridge/Triangle.java | 4 ++ Homeworks/bridge/bridge.png | Bin 0 -> 23060 bytes Homeworks/bridge/bridge.uml | 54 ++++++++++++++++++ Homeworks/factory_method/Circle.java | 5 ++ Homeworks/factory_method/Rectangle.java | 5 ++ Homeworks/factory_method/Shape.java | 3 + Homeworks/factory_method/ShapeFactory.java | 18 ++++++ Homeworks/factory_method/Square.java | 5 ++ Homeworks/factory_method/factory_method.png | Bin 0 -> 21313 bytes Homeworks/factory_method/factory_method.uml | 52 +++++++++++++++++ .../null_object_pattern/no_subscription.rb | 13 +++++ Homeworks/null_object_pattern/null_object.png | Bin 0 -> 10531 bytes Homeworks/null_object_pattern/null_object.uml | 25 ++++++++ Homeworks/null_object_pattern/user.rb | 19 ++++++ 20 files changed, 251 insertions(+) create mode 100644 Homeworks/Answer.md create mode 100644 Homeworks/bridge/BlueColor.java create mode 100644 Homeworks/bridge/Circle.java create mode 100644 Homeworks/bridge/Color.java create mode 100644 Homeworks/bridge/GreenColor.java create mode 100644 Homeworks/bridge/Shape.java create mode 100644 Homeworks/bridge/Triangle.java create mode 100644 Homeworks/bridge/bridge.png create mode 100644 Homeworks/bridge/bridge.uml create mode 100644 Homeworks/factory_method/Circle.java create mode 100644 Homeworks/factory_method/Rectangle.java create mode 100644 Homeworks/factory_method/Shape.java create mode 100644 Homeworks/factory_method/ShapeFactory.java create mode 100644 Homeworks/factory_method/Square.java create mode 100644 Homeworks/factory_method/factory_method.png create mode 100644 Homeworks/factory_method/factory_method.uml create mode 100644 Homeworks/null_object_pattern/no_subscription.rb create mode 100644 Homeworks/null_object_pattern/null_object.png create mode 100644 Homeworks/null_object_pattern/null_object.uml create mode 100644 Homeworks/null_object_pattern/user.rb 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 0000000000000000000000000000000000000000..fe59090f49a4557d7e1d28202e863777e5b0af11 GIT binary patch literal 23060 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 PV}k>QG)GhzI!FBnR*@ + + 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 0000000000000000000000000000000000000000..e4238bf1ca6f22d16cb2ddcdd4968a6a2ee5f223 GIT binary patch literal 21313 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 O67+QSb6Mw<&;$SiF|_3X literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..e21de1286c22282a9a5ad11c8c48d176a1a59ac1 GIT binary patch literal 10531 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 wi)&oikXdK-XCmJjH?Dn?|9`<$`Afh + + 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