回 帖 发 新 帖 刷新版面

主题:设计模式问题请教!!!




                interface ITest
        {

            void run(IDisplay display);
        }
        interface IDisplay
        {
            void Display(string text);
        }
        public class DiasplauClass:IDisplay
        {
        
            public void Display(string text)
            {
                
                MessageBox.Show(text);///用户可自行设计的一系列显示规则
            }

            

        }

        public class Test:ITest
        {
            public void run(IDisplay display)
            {
                        for (int i=0;i<100;i++)
                           {
                             
                               .....//用户设计的一系列计算或操作产生被显示内容
                     
                               display.Display(i.ToString()/*被显示内容*/);要求一个循环显示一次内容
                           }

            }
        }
            
        
    public class Appliction
        {

        public static void Main()
        {
                    Test test=new Test();
                    DiasplauClass display=new DiasplauClass(); 
            test.run(display);

        }
    }

以上是我的问题类的代码模型,类Test及DiasplauClass作为一个组件存在于系统中,其中Test类中的方法run()是经常需要变化的,但每个
run()方法中都要调用Display()方法,传递的参数也是变化的。由于Test组件是需要客户自己开发的,即方法run()中的内容由客户编写,
这样就存在假如编写人员忘记调用Display()方法,那么我的实际目的将不能达到或者说我的本意是需要在两个组件的实现中自动的完成显示
功能,我对这个系统的设计思路是否是否存在问题或者采用其他的方法诸如多线程技术,比如直接在DiasplauClass类中去调用test类中run()方法产生的被显示内容,
如果是这样的话,我该如何去设置标志位使display()方法在合适的时机知道我的被显示内容产生完成,或者通过其他更好的设计来实现我的功能要求?
谢谢赐教!还有我不知道在这个例中是不适合套用中介者设计模式。

回复列表 (共1个回复)

沙发

在下面这些地方找找看吧:

[url=http://www.flashvod.cn]计算机专业知识[/url]

如你想了解或更深入的学习各种编程知识,请看:
[url=http://www.flashvod.cn/sort.asp?BigClassid=1]编程乐园[/url]
如你想了解或更深入的学习各种网页设计知识,请看:
[url=http://www.flashvod.cn/sort.asp?BigClassid=2]网页设计[/url]

如你想了解或更深入的学习各种网络应用知识,请看:
[url=http://www.flashvod.cn/sort.asp?BigClassid=4]网络应用[/url]

如你想了解或更深入的学习各种网络安全知识,请看:
[url=http://www.flashvod.cn/sort.asp?BigClassid=5]网络安全[/url]

如你想了解或更深入的学习各种操作系统知识,请看:
[url=http://www.flashvod.cn/sort.asp?BigClassid=8]操作系统[/url]

如你想了解或更深入的学习各种计算机基础知识,请看:
[url=http://www.flashvod.cn/sort.asp?BigClassid=12]基础知识[/url]

如你想了解或更深入的学习更多的计算机知识,请看:
[url=http://www.flashvod.cn/sort.asp?BigClassid=11]其他[/url]

我来回复

您尚未登录,请登录后再回复。点此登录或注册