আমার কাছে ক্লাসগুলির একটি শ্রেণিবিন্যাস রয়েছে যা জিইউআই নিয়ন্ত্রণগুলি উপস্থাপন করে। এটার মতো কিছু:
Control->ContainerControl->Form
আমাকে এমন একটি ধারাবাহিক অ্যালগরিটম বাস্তবায়ন করতে হবে যা বিভিন্ন স্টাফ করার মতো জিনিসগুলির সাথে কাজ করে এবং আমি ভাবছি যে ভিজিটর প্যাটার্নটি সবচেয়ে পরিষ্কার সমাধান হবে। উদাহরণস্বরূপ একটি অ্যালগরিদম গ্রহণ করা যাক যা বস্তুর শ্রেণিবিন্যাসের একটি এক্সএমএল প্রতিনিধিত্ব তৈরি করে। 'ক্লাসিক' পদ্ধতির ব্যবহার করে আমি এটি করব:
public abstract class Control
{
public virtual XmlElement ToXML(XmlDocument document)
{
XmlElement xml = document.CreateElement(this.GetType().Name);
// Create element, fill it with attributes declared with control
return xml;
}
}
public abstract class ContainerControl : Control
{
public override XmlElement ToXML(XmlDocument document)
{
XmlElement xml = base.ToXML(document);
// Use forech to fill XmlElement with child XmlElements
return xml;
}
}
public class Form : ContainerControl
{
public override XmlElement ToXML(XmlDocument document)
{
XmlElement xml = base.ToXML(document);
// Fill remaining elements declared in Form class
return xml;
}
}
তবে আমি কীভাবে এটি ভিজিটর প্যাটার্ন দিয়ে করব তা নিশ্চিত নই। এটি হল প্রাথমিক বাস্তবায়ন:
public class ToXmlVisitor : IVisitor
{
public void Visit(Form form)
{
}
}
যেহেতু এমনকি বিমূর্ত ক্লাসগুলি বাস্তবায়নে সহায়তা করে আমি কীভাবে টক্সএলএমভিসিটারে সঠিকভাবে এটি করব তা নিশ্চিত নই?
আমি যে কারণে ভিজিটর প্যাটার্নটি বিবেচনা করছি তা হ'ল কিছু অ্যালগরিদমের প্রকল্পে ক্লাসগুলি প্রয়োগ করা হয় না এবং সেখানে বিভিন্ন ধরণের অ্যালগোরিদম রয়েছে যাতে রেফারেন্সের প্রয়োজন হয় না তাই আমি বড় ক্লাসগুলি এড়িয়ে চলেছি।