首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >子类的交互设计

子类的交互设计
EN

Stack Overflow用户
提问于 2014-02-17 15:04:47
回答 2查看 107关注 0票数 0

我想得到一些关于下面的设计问题的建议。

假设我想要编写一些类来枚举USB设备,选择特定的设备并通过它为不同的平台传输数据(这只是一个设计问题的非常基本的scenario.More,而不是任何与USB相关的问题)。

现在我想为USB设备创建一个设备基类,它可以具有enumerate_devices、基于字符串的get_particular_device等功能。因此,我可能会有一些子类,它们将使用特定于平台的apis来实现这一点。

现在,我想要的另一个类是一些buffer类,它将把数据传输到USB端点。这同样需要由不同的平台基于它们提供的apis来实现。

现在假设我创建了一个基于Windows的USB设备类和一个buffer类,并使用Windows提供的apis实现它们。我的问题是,如果我的Windows buffer类需要来自Windows设备类的一些数据,我该怎么办。我可以使用哪种模式,使基类对子类中使用的基于内部中间平台的结构保持匿名,而buffer类可以使用特定的设备类数据成员?想要得到一个好的设计。不知道我的文字是否写得足够清楚。希望能获得一些洞察。

编辑:我知道工厂和抽象工厂。这与他们无关。我不能通过UsbDevice*的对象通过工厂模式访问子类成员函数

简要概述。

代码语言:javascript
复制
SomeWindowsUsbDevice : public UsbDevice {
    public:
        void findDevices() {  // just a child class function. Not in base class
            //Code to find devices using platform apis.
            //fills below two private structures.
        }
    private:
        DevEnum* pdevenum; //some platform specific structure.
        Buffsize* pbufsize; // some platform specific structure.
}

SomeWindowsUsbDataTrf :  public UsbDataTrf {
    public:
        DevEnum* getdevicelist() {
            //Need to get access to SomeWindowsUsbDevice::pdevenum

        }

        Buffsize* getbuffsize() {
            //Need to get access to SomeWindowsUsbDevice::pdevenum
        }

}
EN

回答 2

Stack Overflow用户

发布于 2014-02-17 15:19:31

尝试端点重定向,有关更多详细信息,请访问Endpoint Redirection

我还建议你阅读工厂模式,在阅读时你会得到为什么建议它的观点,只要谷歌工厂模式,你会有一个巨大的描述可用

票数 0
EN

Stack Overflow用户

发布于 2014-02-17 15:27:16

Abstract Factory pattern适用于您的情况。“提供用于创建相关或从属对象族的接口,而无需指定它们的具体类。”

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21822748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档