繁体   English   中英

调用外部结构的方法的合适设计模式是什么? [关闭]

What's an appropriate design pattern to call outer struct's method? [closed]

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

例如,我有一个父结构Connection和一个子结构Dialect如下:

type Connection struct {
    conn *net.TCPConn
    databaseDialect DatabaseDialect
}

func (c *Connection) modifySQL(sql string) (string, error) {
}

// Close cleans up
func (c *Connection) Close() error {
    ...
}

func (c *Connection) handleConnection() error {
    c.databaseDialect = &PostgreSQLDialect{
        conn: c.conn,
        modifySQLFunc: c.modifySQL,
    }
    return dialect.HandleConnection()
}

type DatabaseDialect interface {
    HandleConnection()
}

type PostgreSQLDialect struct {
    conn *net.TCPConn
    modifySQLFunc func(string) (string, error)
}

func (d *PostgreSQLDialect) HandleConnection() error {
    buff := make([]byte, 0xffff)
    d.conn.Read(buff)
    sql := parseToSQL(buff) // parse buffer to SQL statements
    
    // call outer's function here
    sql, err = d.modifySQLFunc(sql)
    ...
}

可以看到外层 function modifySQLPostgreSQLDialect中传递。 但事情可能更复杂。 假设我们需要调用更多的外部函数。 例如,当连接关闭时。 我们需要调用外部的 function Close()来清理资源。 所以我很好奇PostgreSQLDialect是否需要对外部结构Connection有一个引用变量。 但我只是觉得让我的代码架构良好并不是一个好的设计。

有没有适合这种情况的设计模式? 欢迎任何开源 repo、源代码或文章。

问题暂未有回复.您可以查看右边的相关问题.
2 这种情况下合适的设计模式是什么?

总公司必须分配车辆在区域商店之间转移稻谷库存,这些地区的收货可能不对称。 车辆分配将通过先进先出队列完成。 软件库中提供了一些已经开发的队列容器,它将提供标准的队列操作来对数据进行入队和出队。 但是,您必须开发一些特定的操作来搜索车辆并将车辆列在队列中。 哪种设计模式适合获得队列所需的附加功能? ...

3 寻找合适的设计模式

我有一个游戏可以在每次比赛后跟踪用户状态,例如他们走了多远,攻击了多少次,掉了多远等等,而我目前的实现方式如下所示(简化版): 因此,我有一个PlayerData类,其中包含所有统计信息,并将其从播放器类中删除,因为它不是播放器逻辑的一部分。 然后,我有了PlayerManager,它 ...

4 结构与行为设计模式[关闭]

我刚刚开始阅读设计模式,我有一些基本的疑问,即使经过很多文章也不清楚。 有人可以跟我解释一下吗? 我在这里看过很多类似的帖子,但不是很清楚。 他们是如何分离出结构和行为模式的? 有没有好的书可以遵循?现在我正在关注Head的第一个设计模式。 记住所有这些模式并应用的 ...

5 层次结构的设计模式[关闭]

有人知道分层结构的一些设计模式吗? 例如,管理库存类别,会计科目表,人力资源划分等。 提前非常感谢你 编辑:感谢您的关注。 我正在寻找一种更好的方法来处理层次结构项,它们应根据层次结构级别对其应用操作。 我一直在研究Martin Fowler的模式,例如“会计”,但是我想知道是 ...

7 包含设计模式的React方法是什么?

我想尽可能地封装。 假设我们正在使用具有模式的CSS框架,并且希望对其进行组件化。 这将使我们能够集中所有代码实例,因此,如果要更改模式,则只需在此组件中进行更改。 <Modal header={ "Title" } body={ ...

2018-08-14 12:16:37 2 65   reactjs
8 这个设计模式是什么?

我阅读了有关FactoryMethod和AbstractFactory的维基百科文章,但以下代码似乎不适合任何地方。 有人可以向我解释下面的模式是什么,或者它是否是反模式? 假设用户使用html页面上的单选按钮选择支付方法,而gatewayId则从单选按钮值派生。 我看过这样的代 ...

9 哪种设计模式最合适

假设我们有一组几个服务类(A,B,C,D,E,F),并且类的数量很大并且可能会改变。 也有使用它们的类。 首先,我不想编写冗长的构造函数。 其次,例如,今天出现了一个新的服务类,然后需要将其添加到A,B,C类中,明天再将其添加到D,E,F使用的另一个服务类中。哪种设计模式最适合这个案例? ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM