CÁC GIẢI PHÁP LẬP TRÌNH C# - Trang 109

109

Chương 3: Miền ứng dụng, cơ chế phản chiếu, và siêu dữ liệu

void Start();

void Stop();

}

// Lớp cơ sở trừu tượng mà tất cả các plug-in phải dẫn xuất từ đây.

public abstract class AbstractPlugin : IPlugin {

// Chuỗi chứa lời mô tả plug-in.

private string description = "";

// Thuộc tính dùng để lấy lời mô tả plug-in.

public string Description {

get { return description; }

set { description = value; }

}

// Khai báo các thành viên của giao diện IPlugin.

public abstract void Start();

public abstract void Stop();

}

// Một hiện thực đơn giản cho giao diện IPlugin

// để minh họa lớp PluginFactory.

public class SimplePlugin : AbstractPlugin {

// Hiện thực phương thức Start.

public override void Start() {

Console.WriteLine(Description + ": Starting...");

}

// Hiện thực phương thức Stop.

public override void Stop() {

Console.WriteLine(Description + ": Stopping...");

}

}

// Factory dùng để tạo các đối tượng của IPlugin.

public sealed class PluginFactory {

public static IPlugin CreatePlugin(string assembly,