BÀI TẬP
Môn TKPMHDT
--Một số bài tập về Design Patterns (tiếp theo)
1. Dưới đây là sơ đồ lớp của mẫu Singleton, hãy viết đoạn code bằng Java/C# để cài đặt cho
(các) lớp trong sơ đồ:
class Structural
Singleton
-
instance: Singleton
-instance
+ Instance() : Singleton
# Singleton()
2. Lược đồ lớp sau biểu diễn cho mẫu Builder. Hãy bổ sung các thuộc tính và phương thức
còn thiếu trong các lớp VehicleBuilder và ScooterBuilder để hoàn chỉnh sơ đồ (nêu rõ
kiểu của từng thuộc tính và phương thức – tĩnh/ảo/cụ thể/…)
class BuilderRealWorld
VehicleBuilder
Shop
+ Construct(VehicleBuilder) : void
#vehicle
Vehicle
-
parts: Hashtable = new Hashtable()
type: string
+ Show () : void
+ Vehicle(string)
«indexer»
+ this(string) : object
CarBuilder
+
+
+
+
BuildDoors() : void
BuildEngine() : void
BuildFrame() : void
BuildWheels() : void
MotorCycleBuilder
+
+
+
+
ScooterBuilder
BuildDoors() : void
BuildEngine() : void
BuildFrame() : void
BuildWheels() : void
3. Cho lược đồ lớp thuộc mẫu Adapter như sau. Hãy bổ sung các thuộc tính và phương thức
còn thiếu cho lớp GooseAdapter để lớp Goose có thể tương thích với giao tiếp Iquackable.
Page |1
class Class Diagram 6
«interface»
IQuackable
+ Quack() : void
DuckCall
GooseAdapter
-goose
Goose
+ Honk() : void
+ ToString() : string
+ Quack() : void
+ ToString() : string
4. Với lược đồ ở câu 3, cho cài đặt các lớp như sau. Hãy cài đặt hoàn chỉnh lớp
GooseAdapter.
public interface IQuackable
{
void Quack();
}
public class DuckCall : IQuackable
{
public void Quack()
{
Console.WriteLine("Kwak");
}
public override string ToString()
{
return "Duck Call";
}
}
public class Goose
{
public void Honk()
{
Console.WriteLine("Honk");
}
public override string ToString()
{
return "Goose";
}
}
-HẾTPage |2