0

我确实有一个应用程序,它处理在 WPF 画布上绘制一些线条和形状,并在绘制的线上添加许多点,比如 1000。

哪种设计模式适合 wpf 中这种高度广泛的画布绘图。

MVVM 是绘制线条和点绘图的更好方法吗?

非常感谢任何帮助/想法。

问候, Sreekesh NK

4

2 回答 2

1

形状和线条绘制是特定于 UI 的,因此在 MVVM 中,这将存在于视图中。

如果您要坚持线条和形状,那么可能会涉及模型和视图模型,但老实说设计模式似乎并没有出现在您的要求中。

MVVM、MVP、MVC——所有这些模式都是企业架构模式。他们关心您的解决方案层和组件的复合分解,将它们分开,以便可以对其进行测试和维护。

画布绘图并不真正属于特定的设计模式。当然你可以使用 MVVM,但我看不出这会影响你对绘图组件的具体实现。

于 2012-05-18T11:25:58.637 回答
0

以下是您可以考虑使用的设计的基本概述:

(我是 C++ 人,但我想你会明白的)

class ScreenBase
{
public:
    // define abstract operations here, may consider different return types
    // These may be Template Patterns depending
    // if there is common stuff to all screens
    virtual void drawLine(/* appropriate params here*/) = 0;
    virtual void dragLine(/* appropriate params here*/) = 0;
    virtual void deleteLine(/* appropriate params here*/) = 0;
    // more common operations

    // Use a Template pattern if there is common screen
    // serialization stuff, else just define it as abstract
    void serialize() {
        // do common stuff here
        doSynchronize();
        // do more common stuff here
    }

    virtual void doSynchronize(/* appropriate params here*/) = 0;
    ...

private:
    // store the drawing shapes here appropriately
};

class Screen1 : public ScreenBase
{
public:
    // concrete operation implementations
    virtual void drawLine(/* appropriate params here*/);
    virtual void dragLine(/* appropriate params here*/);
    virtual void deleteLine(/* appropriate params here*/);
    virtual void doSerialize() { ... }

    // concrete specifics here
};

// class Screen2 : public ScreenBase

// class Screen3 : public ScreenBase

// I dont know the Microsoft stuff, the shapes should be
// defined in WPF, So we wont need to define anything here.

您可以考虑使用 Stategy 设计模式,而不是实现序列化的 Screens,这将创建一个单独的序列化类或类层次结构并将其设置为 Screen(s) 上的属性

试试这个,然后随着你的进步,试着问更具体的问题

于 2012-05-18T11:47:07.287 回答