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 : Singleton # Sin
Trang 1BÀ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() : Singleton
# Singleton()
-instance
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
Shop
+ Construct(VehicleBuilder) : void
VehicleBuilder
MotorCycleBuilder
+ BuildDoors() : void + BuildEngine() : void + BuildFrame() : void + BuildWheels() : void
CarBuilder
+ BuildDoors() : void + BuildEngine() : void + BuildFrame() : void + BuildWheels() : void
ScooterBuilder
Vehicle
- parts: Hashtable = new Hashtable()
- type: string + Show () : void + Vehicle(string)
«indexer»
+ this(string) : object
#vehicle
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
P a g e | 1
Trang 2class Class Diagram 6
«interface»
IQuackable
+ Quack() : void
DuckCall
+ Quack() : void + ToString() : string
+ Honk() : void + ToString() : string -goose
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ẾT-P a g e | 2