这是一个正确的创作模式方式吗?

时间:2013-12-08 09:53:29

标签: c# oop design-patterns factory-pattern builder-pattern

我是设计模式的新手,想知道下面列出的代码片段中特定类型的设计模式(如果有的话)。

基本上有一个基类,它知道如何构建BaseProperty对象:

public abstract class Base
{
    private string m_name;

    public class BaseProperty
    {
        public string Name;
    }

    protected virtual BaseProperty NewProperty()
    {
        return new BaseProperty();
    }

    protected virtual void BuildProperty(ref BaseProperty prop)
    {
        prop.Name = m_name;
    }

    public BaseProperty Property
    {
        get
        {
            BaseProperty prop = NewProperty();
            BuildProperty(ref prop);

            return prop;
        }
    }
}

,这里是一个实现自己的属性构建细节的子类

public class Number : Base
{
    private double m_number;
    public class NumberProperty : BaseProperty
    {
        public double Number;
    }

    protected override BaseProperty NewProperty()
    {
        return new NumberProperty();
    }

    protected override virtual void BuildProperty(ref BaseProperty prop)
    {
        // build the common part
        base.BuildProperty(ref prop);

        // build my specific part
        NumberProperty numberProp = prop as NumberProperty;
        numberProp.Number = m_number;
    }
}

在这段代码中我实现了工厂模式,可以看出子类实现了自己的属性创建方法。目的是收集所有已创建对象的属性以进行持久存储。

让我困惑的是,在创建之后,BaseProperty对象然后以增量方式“制造”,从构建基本部分的base.BuildProperty(prop)开始,然后将对象向下转换为{{1}用于构建其特定于子类的部分。

我做对了吗? 有一个向下铸造操作......应该避免吗?如果是这样,怎么做?

谢谢!

0 个答案:

没有答案