C# OOP实现问题
该项目的思想是html渲染器。 但我想通过使用策略设计模式(不确定它的策略是否为D)来实现更具动态性 渲染策略:C# OOP实现问题,c#,oop,design-patterns,C#,Oop,Design Patterns,该项目的思想是html渲染器。 但我想通过使用策略设计模式(不确定它的策略是否为D)来实现更具动态性 渲染策略: public abstract class RenderStrategy { private Element _RenderElement; public RenderStrategy(Element renderElement) { this._RenderElement = renderElement; } public a
public abstract class RenderStrategy
{
private Element _RenderElement;
public RenderStrategy(Element renderElement)
{
this._RenderElement = renderElement;
}
public abstract String Render();
}
要素:
public abstract class Element
{
public String Render(RenderStrategy strategy)
{
return strategy.Render();
}
}
我的问题是,如果不需要
RenderCompositeElementStrategy我希望这样做:
public interface IStrategy
{
string Render();
}
public class Element : IStrategy
{
public string Render() {
return "rendering for element";
}
}
public class CompositeElement : IStrategy
{
public string Render() {
return "rendering for composite element";
}
}
public class HTMLRenderer
{
private ISTrategy ele = new Element();
private IStrategy comp = new CompositeElement();
private IStrategy curr;
public HTMLREnderer(){
curr = ele; //i set default here to Element, but you can change it base on your need
}
public void RenderNow(){
Console.WriteLine(curr.Render());
//change your strategy accordingly to your need here, may be?
}
}
不,我想这样使用它:我得到了div,它是CompositeElement,而image,它是我想说的元素:div.Render(newrenderhtml(div));或div.Render(新RenderText(div));图像渲染什么?如果与RenderHtml一起使用,问题是复合元素有子节点。元素没有子元素,要呈现div,例如,您必须调用其所有子元素的render函数,将其保存到字符串中,如果呈现html,则需要将该字符串放在div的render函数生成的字符串的中间,问题是如何在不创建重复类的情况下实现此智能