由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 请教一个design的问题
相关主题
Java题求指导 (转载)inheritence problem
两个看来相似的问题protected class member in C++
How does YAHOO calculate RSI? (转载)类设计问题求助
A C++ inheritance question!请问C++小白问题
问问C++的diamond problemC++ Q96: function inheritance (转载)
interview question: what is the difference between Java and c++Why oop is bad?
请教java中compareTo的方法有人用codeblocks吗?
请教一个Java编程问题关于用 Eclipse 开发C++ 程序
相关话题的讨论汇总
话题: code话题: same话题: different话题: class话题: design
进入Programming版参与讨论
1 (共1页)
b*****a
发帖数: 11
1
我有一些程序share了一些common code:
same code 1
try {
same code 2
different code 1
same code 3
different code 2
}
same code 4
我怎么能最好的design好把这些same code只放一处?
我现在用的是GoF的template method pattern,
在base class里面写进上面的code,
然后child class override 那几个different code snippet.
这样子class数量暴多
感觉这些被我当作child class的实际上更像是不同的object。
当然另外一个方案就是switch了,这个也太难看了。
但是除了inheritance 实在想不出其他好的办法。
那位高手帮我看看?谢谢
另外,我用的是C#
c*****t
发帖数: 1879
2
只要记住一点,所谓的 pattern 其实就是如何将 code, varaible,
object 等参数化。
delegate void CodeBlock ();
void myExec (CodeBlock block11, CodeBlock block2)
{
...
block1 ();
...
block2 ();
...
}

【在 b*****a 的大作中提到】
: 我有一些程序share了一些common code:
: same code 1
: try {
: same code 2
: different code 1
: same code 3
: different code 2
: }
: same code 4
: 我怎么能最好的design好把这些same code只放一处?

b*****a
发帖数: 11
3
thanks!

【在 c*****t 的大作中提到】
: 只要记住一点,所谓的 pattern 其实就是如何将 code, varaible,
: object 等参数化。
: delegate void CodeBlock ();
: void myExec (CodeBlock block11, CodeBlock block2)
: {
: ...
: block1 ();
: ...
: block2 ();
: ...

q**1
发帖数: 193
4
不知道你可不可以这样做:
base class 里面包含methods to handle "same_code_[1234]" and
a reference to an object of type implementor(assume we
name it 'imp')which defines the interfaces for different
implement classes, and
implement-1 class 定义 different_code_[12]
implement-2 class 定义 different_code_[12]
.....
然后你的code变成:
same_code_1();
try {
same_code_2();
imp->different_code_1();
same_code_3();
imp->different_code_2();
}
same_code_4();
具体的implement可以在程序中制定,用dispatch-table
or whatever。。。

【在 b*****a 的大作中提到】
: 我有一些程序share了一些common code:
: same code 1
: try {
: same code 2
: different code 1
: same code 3
: different code 2
: }
: same code 4
: 我怎么能最好的design好把这些same code只放一处?

q**1
发帖数: 193
5
BTW. it is about "Bridge" in GOF.

【在 q**1 的大作中提到】
: 不知道你可不可以这样做:
: base class 里面包含methods to handle "same_code_[1234]" and
: a reference to an object of type implementor(assume we
: name it 'imp')which defines the interfaces for different
: implement classes, and
: implement-1 class 定义 different_code_[12]
: implement-2 class 定义 different_code_[12]
: .....
: 然后你的code变成:
: same_code_1();

q**1
发帖数: 193
6
As a rule of thumb with DP:
programming to an interface not an implementation
I am expecting more (discussion|input) abt this topics..

【在 c*****t 的大作中提到】
: 只要记住一点,所谓的 pattern 其实就是如何将 code, varaible,
: object 等参数化。
: delegate void CodeBlock ();
: void myExec (CodeBlock block11, CodeBlock block2)
: {
: ...
: block1 ();
: ...
: block2 ();
: ...

1 (共1页)
进入Programming版参与讨论
相关主题
关于用 Eclipse 开发C++ 程序问问C++的diamond problem
别见笑:一个初级问题:如何把开源open-source的源程序导入Visual studiointerview question: what is the difference between Java and c++
CodeBlocks cannot display vector in Watches请教java中compareTo的方法
请推荐linux下c++的IDE请教一个Java编程问题
Java题求指导 (转载)inheritence problem
两个看来相似的问题protected class member in C++
How does YAHOO calculate RSI? (转载)类设计问题求助
A C++ inheritance question!请问C++小白问题
相关话题的讨论汇总
话题: code话题: same话题: different话题: class话题: design