软件模式——这是什么?
本文关键字:是什么 软件 模式 | 更新日期: 2023-09-27 18:07:14
这与您可能知道的一些软件设计模式相似吗?
我有一个接口:
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
是密封的, 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();
}
}
我认为我的类层次结构有一些缺陷,我希望它是模板化或泛型的,但是像C
这样的类的引入似乎不能维持我正在使用的东西了。
如果我有更多的类X
, Y
和Z
等,也实现IA
接口?
编辑
我的程序现在工作得很好,我只是不知道我是否应用了上面的任何模式。然后我有了另一个类X
:
public class X: IA {
}
,为了使用这个X
作为B<X>
的参数,我必须为X的代表类添加一个新定义
public class RX {
X x;
RX() {
x=new X();
}
X GetX() {
return x;
}
}
所以我必须把B类重写为
template<class T>
public class B {
C c;
RX x;
IA pa;
B() {
// initialize c=new C();
// initialize pa=c.GetA();;
// if parameter X is used
// pa=x.GetX();
}
}
你看,它看起来不整洁。
我想这叫做代理模式。