একটি IReader ইন্টারফেস, IReader ইন্টারফেস রিডার বাস্তবায়ন একটি বাস্তবায়ন এবং পাঠক থেকে ডেটা গ্রহণ এবং প্রক্রিয়া করে এমন একটি শ্রেণি রিডারকনসুমার হিসাবে ধরে নিচ্ছি।
public interface IReader
{
object Read()
}
বাস্তবায়ন
public class ReaderImplementation
{
...
public object Read()
{
...
}
}
উপভোক্তা:
public class ReaderConsumer()
{
public string location
// constructor
public ReaderConsumer()
{
...
}
// read some data
public object ReadData()
{
IReader reader = new ReaderImplementation(this.location)
data = reader.Read()
...
return processedData
}
}
রিডার কনসুমার এবং প্রক্রিয়াজাতকরণ পরীক্ষার জন্য আমি আইআরএডার ব্যবহার করি। সুতরাং রিডার কনসুমার হয়ে ওঠে:
public class ReaderConsumer()
{
private IReader reader = null
public string location
// constructor
public ReaderConsumer()
{
...
}
// mock constructor
public ReaderConsumer(IReader reader)
{
this.reader = reader
}
// read some data
public object ReadData()
{
try
{
if(this.reader == null)
{
this.reader = new ReaderImplementation(this.location)
}
data = reader.Read()
...
return processedData
}
finally
{
this.reader = null
}
}
}
এই সমাধানটিতে মশকরা প্রডাকশন কোডের জন্য একটি আইফোন প্রবর্তন করে কারণ কেবল বিদ্রূপকারী কনস্ট্রাক্টর ইন্টারফেসের একটি উদাহরণ সরবরাহ করে।
এটি লেখার সময় আমি বুঝতে পারি যে চেষ্টা করার পরে অবরুদ্ধ অবরোধটি কিছুটা সম্পর্কিত নয় কারণ এটি অ্যাপলিকেশন চলাকালীন সময়ে ব্যবহারকারীর অবস্থান পরিবর্তন করার ক্ষেত্রে ব্যবহারকারীকে পরিচালনা করতে পারে।
সামগ্রিকভাবে এটি দুর্গন্ধযুক্ত মনে হয়, কীভাবে এটি আরও ভালভাবে পরিচালনা করা যায়?
ReaderConsumer
স্বাধীন করতে প্রশ্ন থেকে বাইরেReaderImplementation
?