Tôi có một hàng đợi xử lý các đối tượng trong một vòng lặp while. Chúng được thêm vào không đồng bộ ở đâu đó .. như thế này:Mẫu thiết kế cho đối tượng C# động
myqueue.pushback(String value);
Và họ được xử lý như thế này:
while(true)
{
String path = queue.pop();
if(process(path))
{
Console.WriteLine("Good!");
}
else
{
queue.pushback(path);
}
}
Bây giờ, điều là tôi muốn sửa đổi này để hỗ trợ một TTL-like (thời gian để sống) cờ, do đó, đường dẫn tệp sẽ được thêm o nhiều hơn n lần.
Làm cách nào tôi có thể thực hiện việc này, đồng thời giữ chữ ký chức năng bool process(String path)
? Tôi không muốn sửa đổi điều đó.
Tôi đã nghĩ về việc giữ một bản đồ hoặc danh sách đếm số lần hàm xử lý trả về false cho đường dẫn và thả đường dẫn từ danh sách ở lần trả về sai thứ n. Tôi tự hỏi làm thế nào điều này có thể được thực hiện tự động hơn, và tốt hơn là tôi muốn TTL tự động giảm số lượng tại mỗi bổ sung mới cho quá trình này. Tôi hy vọng tôi không nói rác. Có thể sử dụng một cái gì đó như thế này
class JobData
{
public string path;
public short ttl;
public static implicit operator String(JobData jobData) {jobData.ttl--; return jobData.path;}
}
Bạn nghĩ gì về phương pháp 'JobData' của mình? –
Điều quan trọng là tôi không muốn sửa đổi chức năng xử lý, tôi chỉ muốn đối tượng 'JobData' có thể thực hiện chuyển đổi ẩn thành String trong C# và một số ý tưởng về việc giảm giá trị tll một cách năng động và rõ ràng – AlexandruC
giải pháp mà tôi sẽ đề cập đến nhưng không xác nhận là thêm một phương thức mở rộng cho loại Chuỗi với bộ đếm TTL của bạn. Không lý tưởng hoặc được đề nghị vì nó thêm một phương thức vô nghĩa vào chuỗi ở khắp mọi nơi (thậm chí giới hạn trong một không gian tên rất cục bộ), nhưng nó sẽ giải quyết vấn đề cụ thể của bạn. –