软件模式 - 这是什么?

时间:2013-04-03 04:03:40

标签: c# templates generics c++-cli

这类似于您可能知道的某些软件设计模式吗?

我有一个界面:

public interface IA {
}

及其密封的子类:

sealed public class A: IA {
}

现在我有了另一个模板类B,其中我想使用A类型的对象代替T类型:

template<class T>
public class B {
    T a;
    IA pa;

    B() {

    }
}

但是,A的构造函数不允许我将模板指定为B<A>,错误表明A 密封,{{1无法在模板中使用。

为了解决这个问题,我创建了另一个类:

A

然后重写模板类public class C { A a; A GetA() { return a; } }

B

我认为我的班级层次结构存在一些缺陷,我希望它是模板化的或通用的,但是像template<class T> public class B { C c; IA pa; B() { // initialize c=new C(); // initialize pa=c.GetA(); } } 这样的类的引入似乎并不能维持我正在使用的东西。

如果我还有更多类CXY等,同时实现Z接口,该怎么办?


编辑

我的程序现在运行正常,我只是不知道我是否应用了上述任何模式。一旦我有另一个班IA

X

为了将此public class X: IA { } 用作X的参数,我必须添加 X代表类的新定义

B<X>

所以我还必须将B类重写为:

public class RX {
    X x;

    RX() {
        x=new X();
    }

    X GetX() {
        return x;
    }
}

你看,它看起来并不整洁。

1 个答案:

答案 0 :(得分:0)

我猜它叫proxy pattern