کنٹرول سسٹمز اور خودکار نظام
ایک مُدولا پلگن فریم ورک ڈیزائن کرنا آزمائشوں کا سامنا کرنا سی# میں شمولیت
Table of Contents
جدید سافٹ وئیر ترقی میں، لطیف اور برقرار رکھنے کے لیے نہایت ضروری ہے مؤثر طریقے سے اس نظام کو ڈیزائن کرنے کے لیے.
ایک دوسرے کی مدد کرنے کیلئے تیار رہیں
اسکے علاوہ ، ہر ایک کو یہ فیصلہ کرنا چاہئے کہ آیا یہ لاگ پیغام کو لاگو کرے یا اسے پار کرے گا یا نہیں ۔ یہ طریقہ غیرضروری طور پر ترقی کرتا ہے ، جیسا کہ نئے نظام کو بدلنے کے بغیر شامل کِیا جا سکتا ہے ۔
ایک خاص قسم کا کام
اس انداز کو عمل میں لانے کے لیے، ایک متضاد لاگجر کلاس کا تعین کرنا جو اگلی سِن درجوں کا حوالہ شامل ہے۔Concrete loggers وارثی اس کلاس سے لیکر اپنے مخصوص آپریٹنگ منطقہ پر عمل پیرا ہوتا ہے۔
- [Abssacting logger: Base class with a system with a story to the on the logger. اخذ شدہ بتاریخ 22 جون 2014. تحقق من التاريخ في:
- Concrete Loggers: Concologyger، فائل لاگوگر، وغیرہ۔
- لاگوگر چِن : [1]: وہ اقتباسات جن کے ذریعے لاگ پیغامات گذرتے ہیں۔
ابکلے لاگگر کا انتخاب
کشش ثقل ایک طریقہ کار کو متعین کرتی ہے جو اس کے پیغام کو عمل میں لاتا ہے یا آگے بڑھتا ہے اس میں ایک طریقہ بھی شامل ہے کہ اگلے لاگگر کو زنجیر میں نصب کیا جائے۔
public abstract class Logger
{
protected Logger nextLogger;
public void SetNext(Logger next)
{
nextLogger = next;
}
public void Log(string message)
{
if (CanHandle(message))
{
WriteMessage(message);
}
if (nextLogger != null)
{
nextLogger.Log(message);
}
}
protected abstract bool CanHandle(string message);
protected abstract void WriteMessage(string message);
}
کوارک لونگرز کی تخلیق
ہر کنکریٹ لاگger اور طریقے سے منطق کا تعین کرنے کے لیے طریقے اختیار کریں. مثال کے طور پر، ایک مضبوط لاگجر تمام پیغامات کو ہینڈل کر سکتا ہے جبکہ فائل لاگجر صرف غلطی پیامات کو ہینڈل کر سکتا ہے۔
public class ConsoleLogger : Logger
{
protected override bool CanHandle(string message)
{
// Handle all messages
return true;
}
protected override void WriteMessage(string message)
{
Console.WriteLine($"Console: {message}");
}
}
public class ErrorFileLogger : Logger
{
protected override bool CanHandle(string message)
{
// Example: handle only error messages
return message.Contains("Error");
}
protected override void WriteMessage(string message)
{
// Write to error log file
File.AppendAllText("error.log", message + Environment.NewLine);
}
}
لاگجر چِن کو پَر
جب کوئی پیغام لاگو ہو جائے تو وہ زنجیر کو پار کرکے اُسے عمل میں لانے کی اجازت دے دیتا ہے ۔
var consoleLogger = new ConsoleLogger();
var errorLogger = new ErrorFileLogger();
consoleLogger.SetNext(errorLogger);
// Usage
consoleLogger.Log("This is a regular message.");
consoleLogger.Log("Error: Something went wrong.");
غلط خواہشات کو پورا کرنے کے فائدے
ایک ایسے فریم ورک کو تشکیل دینا جس میں کسی کو کھانے پینے کی عادات موجود ہوں :
- Extensibility: Easily institution کے بغیر نئے نئے نئے نئے شمارے شامل کیے جاتے ہیں۔
- Decoupling: [حوالہ درکار] services servicelylylylyly, moduler ڈیزائن کو فروغ دیتے ہیں۔
- Flexibility: مختلف تنازعات کے لیے مختلف زنجیروں کو ڈھالا جائے۔
کُنَّا
C# میں موجود servancial system کے استعمال سے modular arme کا ڈیزائن بنا نے کے ليے توازن کو مضبوط اور قابل بنانے کے ليے متحرک زنجیروں کو مضبوط بنانے اور فعال بنانے کے ذریعے ترقی کرنے والے ان کے اطلاقیہ کی ضرورت کو بڑھا سکتے ہیں۔