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,