Tôi đang nghĩ để tạo đối tượng bộ lọc để lọc và xóa mọi thứ như thẻ html khỏi ngữ cảnh. Nhưng tôi muốn nó độc lập, có nghĩa là mẫu thiết kế tôi có thể áp dụng sẽ giúp tôi thêm nhiều bộ lọc hơn trong tương lai mà không ảnh hưởng đến các mã hiện tại. Tôi nghĩ Tóm tắt nhà máy nhưng có vẻ như nó sẽ không làm việc theo cách tôi muốn. Vì vậy, có thể xây dựng nhưng nó trông giống nhau. Tôi không biết tôi là kinda nhầm lẫn, một số xin vui lòng giới thiệu cho tôi một mẫu thiết kế mà có thể giải quyết vấn đề của tôi, nhưng trước đó cho tôi xây dựng vấn đề một chút.Đề xuất mẫu thiết kế để lọc tùy chọn
Cho phép nói rằng tôi có một lớp học có trường Mô tả hoặc thuộc tính bao giờ. Và tôi cần bộ lọc loại bỏ những thứ tôi muốn từ thuộc tính Mô tả này. Vì vậy, bất cứ khi nào tôi áp dụng bộ lọc, tôi có thể thêm bộ lọc khác trong lớp cơ bản. Vì vậy, thay vì phải chạm lại vào trường Mô tả, tôi có thể dễ dàng thêm nhiều bộ lọc hơn và tất cả các bộ lọc sẽ chạy cho trường Mô tả và xóa mọi thứ mà chúng được cho là xóa khỏi ngữ cảnh Mô tả.
Tôi hy vọng tôi có thể mô tả sự cố của mình. Tôi nghĩ một số bạn đã gặp phải tình huống tương tự trước đây.
Cảm ơn trước ...
Edit:
Tôi thực sự muốn tạo bộ lọc như các loại/classes thay vì phương pháp thông thường hoặc bất cứ điều gì. Giống như:
class TextFilter : IFilter
{
private string something;
public string Awesome {get;set;}
public string FilterYo(string textFiltered)
{
// Do filtering
}
}
class HtmlFilter : IFilter
{
private string something;
private string iGotSomething;
public string Awesome {get;set;}
public string FilterYo(string textFiltered)
{
// Do filtering
}
}
class Main
{
protected void Main(object sender, EventArgs e)
{
InputClass input = new InputClass();
string filtered = new StartFiltering().Filter(input.Description); // at this moment, my input class shouldn't know anything about filters or something. I don't know if it makes any sense but this is what in my mind.
}
}
Tại thời điểm này, nếu tôi muốn áp dụng Nhà máy trừu tượng cũng vô nghĩa hoặc Trình xây dựng. Bởi vì tôi không muốn một thứ đặc biệt, tôi cần tất cả chúng.
Cảm ơn câu trả lời của bạn bằng cách này.
Chỉnh sửa 2 - Có thể trả lời cho tôi
Okay cho phép suy nghĩ về mô hình chiến lược với giao diện chứ không phải là đại biểu.
interface IFilter //Strategy interface
{
string Filter(string text);
}
class LinkFilter:IFilter //Strategy concrete class
{
public string Filter(string text)
{
//filter link tags and return pure text;
}
}
class PictureFilter:IFilter //Strategy concrete class
{
public string Filter(string text)
{
//filter links and return pure text;
}
}
class Context
{
private IFilter _filter;
private string _text;
public Context(IFilter filter,string text)
{
this._filter = filter;
this._text = text;
}
public void UpdateFilter(IFilter filter)
{
this._filter = filter;
}
public string RunFilter()
{
this._text = _filter.Filter(this._text);
return this._text;
}
}
class MainProgram
{
static void Main()
{
MyObject obj = new MyObject();
LinkFilter lfilter = new LinkFilter();
PictureFilter pfilter = new PictureFilter();
Context con = new Context(lfilter,obj.Description);
string desc = con.RunFilter();
con.UpdateFilter(pfilter);
desc = con.RunFilter();
}
}
[Lọc Design Pattern Với Ví dụ] (http://www.singhajit.com/filter-design-pattern/) –