OOP实施问题

时间:2015-08-18 15:58:32

标签: c# oop design-patterns

该项目的想法是html渲染器。 但我想通过使用策略设计模式(不确定其策略是否为D)来实现更具动态性。

RenderStrategy:

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();
    }
}

enter image description here

我的问题是如何在不需要的情况下复合CompositeElement RenderCompositeElementStrategy

1 个答案:

答案 0 :(得分:1)

我会这样做:

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?
   }
}