标签: design-patterns

根据情况在C#中实现Singleton设计模式的不同方法有哪些

使用各种语言结构在C#中实现Singleton模式的可能的不同方式有哪些?在哪种情况下使用每种解决方案?每种实施的优缺点是什么?并且,这是考虑性能,锁定和垃圾收集影响的那些实现中最好的一个?

还有哪些其他方法可以实现相同的方法以及如何改进以下代码:

public class Singleton
{
    private static readonly Singleton _instance;
    private Singleon()
    {
    }

    public static Singleton GetInstance()
    {
        if(_instance == null)
            _instance = new Singleton();


        return _instance;
    }

}
Run Code Online (Sandbox Code Playgroud)

c# singleton design-patterns language-construct

-2
推荐指数
1
解决办法
550
查看次数

C#中的静态(编译时/严格类型)多分派支持

我最近发现自己在我的代码中反复使用相同的模式.基本上它是访问者模式的变体,我用它来解析对派生类的基类实例的引用.这种方法需要大量的样板代码.

问题:

  • 如何在不写入大量访问者代码的情况下以静态/严格类型的方式在C#中多方式调度方法?
  • 是否有生成此代码的工具/扩展程序?
  • 为什么C#语言中没有任何内容可以解决多方调度?我不相信我是唯一发现这令人讨厌的人.我可能是非常错误的,问题不存在,所以我想知道你是怎么回事.

c# design-patterns programming-languages visitor-pattern multimethod

-2
推荐指数
1
解决办法
429
查看次数

java类中的设计模式

可能重复:
Java:一个文件中的多个类声明

最近我经历了一个java类,在其中我发现它是一个名为A的java类,但之后又有一个名为B的类在同一个java文件中写在A类之后..就像这样

class A
{


} 

Class B
{

}
Run Code Online (Sandbox Code Playgroud)

但是这个班终于以A.java的名字保存了,请让我知道它是什么样的设计模式.. !!

java design-patterns

-2
推荐指数
1
解决办法
145
查看次数

如何发现"A*"(A STAR)算法?

我的直觉和假设是每当我们不能使用贪婪时,那么A*将成为可行的方式,但我并非100%肯定.我需要更多关于如何识别和发现A*算法的示例和模式.

有人可以给出一些特殊的极端情况,当你第一次看到它并且你知道这不会贪婪或它必须是A*甚至没有打扰尝试.

algorithm design-patterns greedy

-2
推荐指数
1
解决办法
884
查看次数

MVC vs. Active Record vs. Factory

活动记录模式是一种访问数据库中数据的方法。数据库表或视图被包装到一个类中。因此,对象实例与表中的一行相关联。创建对象后,保存时将新行添加到表中。

MVC 是使用 MVC(模型视图控制器)设计构建 Web 应用程序的框架:模型代表应用程序核心(例如数据库记录列表)。视图显示数据(数据库记录)。

在工厂模式中,我们在不向客户端公开创建逻辑的情况下创建对象,并使用公共接口引用新创建的对象。

与 Active Record 相比,使用 MVC 有什么好处?

在我的网站中,我使用了 Active Record 和 Factory 模式的组合。对我来说,使用这些更简单、更快捷,因为我只需要编写一些函数。另外,我不需要视图、模型或其他东西。我的意思是在我看来,我越受规则约束,设计就越复杂。

但如果我说的是正确的,为什么有太多的框架使用 MVC ?

model-view-controller activerecord design-patterns factory

-2
推荐指数
1
解决办法
506
查看次数

有缓冲锁模式吗?

在 Go 中有一个缓冲通道的概念。这是一个通道,在您填充其缓冲区之前不会被阻塞。

一般缓冲锁定是否有任何一般模式?它将为有限数量的客户端锁定一些资源。

design-patterns go

-2
推荐指数
1
解决办法
68
查看次数

Facade设计模式有哪些缺点?

\xe2\x80\xa6 我们如何使用面向方面的编程来克服它们?

\n

aop design-patterns facade aspects

-3
推荐指数
1
解决办法
4070
查看次数

这是基于消息总线的发布-订阅模式吗?

根据这个答案

消息总线是一种消息传递基础结构,允许不同的系统通过一组共享的接口(消息总线)进行通信。

https://i.stack.imgur.com/5PkJy.gif


以下是创建消息中心以将发布者与多个订阅者进行通信所启动的createHub()功能和Run()方法main()

type PubHub struct {
    subscribers map[*subscriptionmediator.HandlerSubscription]struct{}
    Register    chan *subscriptionmediator.HandlerSubscription
    Unregister  chan *subscriptionmediator.HandlerSubscription
    Broadcast   chan *events.Env
}


func createHub() *PubHub {

    return &PubHub{
        subscribers: map[*subscriptionmediator.HandlerSubscription]struct{}{},
        Register:    make(chan *subscriptionmediator.HandlerSubscription),
        Unregister:  make(chan *subscriptionmediator.HandlerSubscription),
        Broadcast:   make(chan *events.Envelope),
    }
}

func (h *PubHub) Run() {

    for {
        select {
        case subscriber := <-h.Register:
            h.subscribers[subscriber] = struct{}{}

        case subscriber := <-h.Unregister:
            if _, ok := h.subscribers[subscriber]; ok {
                delete(h.subscribers, subscriber)
            }
        case message := <-h.Broadcast: …
Run Code Online (Sandbox Code Playgroud)

design-patterns go publish-subscribe

-3
推荐指数
1
解决办法
283
查看次数

-3
推荐指数
1
解决办法
208
查看次数

责任链 - lambda函数实现

如何在Java 8中使用Lambda实现Chain of Responsibility模式?它看起来怎么样?


我在本文中只找到了一个段落:

责任链

可能会或可能不会委托给另一个lambda的lambda,它可能会或可能不会委托给另一个lambda,无限制.(如何将"下一个"引用到lambda中作为练习留给读者.)

java lambda design-patterns chain-of-responsibility java-8

-4
推荐指数
1
解决办法
4034
查看次数

java库中的以下哪个类没有实现设计模式?

今天,我遇到了这个奇怪的面试问题.java库中的以下哪个类没有实现设计模式?

  1. 独生子
  2. 观察
  3. 迭代器
  4. 代理

有人有线索吗?我怀疑问题的正确性,但想知道社区意见.如果有一些我不知道的事情,因为没有一个选项有意义.

java design-patterns

-6
推荐指数
1
解决办法
733
查看次数