相关疑难解决方法(0)

功能设计模式

有许多功能习语:monad,applicatives,arrows等.它们记录在不同的文章中,但不幸的是我不知道任何书籍或文章在一个地方汇总(有Typeclassopedia但它有很多没有很好覆盖的区域).任何人都可以推荐一篇文章/书籍,它可以在一个地方很好地覆盖它们,并且具有FP中级技能的程序员可以访问它吗?

monads haskell functional-programming scala

106
推荐指数
5
解决办法
9788
查看次数

面向对象编程的替代方案?

OOP可能是当今软件设计中使用最多的编程范例.我的问题是 - 其他范例可以与之竞争并且可以代替oop?为了澄清这个问题,我不是在询问其他范例是什么.其中有很多,我想知道哪一个:

  • 已经在实践中使用,不仅在理论上.
  • 可以与oop竞争,因此它可以在没有或最少痛苦的大型项目中使用.
  • 可用于开发具有业务逻辑,数据库等的桌面应用程序.
  • 不与oop的伴侣一起使用,但可以替换oop.

如果有的话,它的优缺点是什么,为什么它比oop更好/更差,最好用什么语言,在流行的语言中使用它,有任何设计模式,还可以完全取代oop?

language-agnostic oop paradigms programming-languages

72
推荐指数
3
解决办法
2万
查看次数

可替代面向对象设计模式的功能或动态技术示例

这与函数式编程取代GoF设计模式有些关系吗?

自从在C#中引入lambdas和动态,是否有任何标准设计模式可以被认为是过时的或使用lambdas或其他语言特性以其他方式解决?

例如,C#的动态功能现在可用于执行多种方法. http://achoiusa.wordpress.com/2009/08/27/exploring-c-4-0-multimethods/ (我想Marc Gravell有一些关于此的帖子?)

就个人而言,我倾向于使用现在的Func of Tn来做工厂.

例如

public static class SomeFactory
{
     public static Func<IUnitOfWork> GetUoW = 
       () => new EF4UoW(new SomeModelContainer());
}

// usage

var uow = SomeFactory.GetUoW();

// testabillity

var testUoW = new InMemUoW();
testUoW.Add(new Customer()...);

SomeFactory.GetUoW = () => testUoW;

// the service can get an UoW using the factory
var result = SomeDomainService.DoStuff(...); 
Run Code Online (Sandbox Code Playgroud)

有人有其他例子吗?

[编辑]当然,模式本身并不过时,但有些模式是范式特定的,因此C#现在是多范式,C#的一些功能属性可能会使一些OOP模式缺乏吸引力.

c# lambda design-patterns functional-programming dynamic

13
推荐指数
1
解决办法
1201
查看次数

现代C++在多大程度上消除了对设计模式的需求?

1994年推出的GoF设计模式书是用C++语言编写的,许多代码示例都是用C++编写的.其他语言的程序员认为他们的语言不需要这23种设计模式,因为这些语言具有使许多模式冗余的特征.

来自维基百科:

设计模式的一个主要批评是它的模式只是C++缺少功能的变通方法,用冗长的具体模式取代优雅的抽象特征,基本上成为"人类编译器"或"手工生成某些宏的扩展".Peter Norvig演示了设计模式中23种模式中的16种在Lisp或Dylan中被简化或消除(通过直接语言支持).

自Design Patterns Books出版以来,C++经历了五次修订(98,33,11,14,17).那么问题是,现代C++在多大程度上简化或消除了对这23种设计模式的需求?

列出设计模式以及C++语言功能可以消除或简化对该模式的需求.

c++ design-patterns

13
推荐指数
1
解决办法
282
查看次数

功能,动态和面向方面编程的模式

我们有一本非常好的GoF书(设计模式:可重用的面向对象软件的元素),关于面向对象编程中的模式,以及关于这个主题的大量文章和资源.

是否有关于函数式编程的模式(最佳实践)的书籍(文章,资源)?

对于Python和Ruby等语言的动态编程?

对于AOP?

aop design-patterns functional-programming dynamic-programming

10
推荐指数
2
解决办法
1792
查看次数

Collections.sort使用什么设计模式?

以下列方式将比较器应用于列表时,使用的设计模式是什么或此处使用的技术是什么?

Collections.sort(myCollection, new Comparator<MyItem>() {

    @Override
    public int compare(MyItem item1, MyItem item2) {
        return item1.getId().compareTo(item2.getId());
    }

});
Run Code Online (Sandbox Code Playgroud)

java oop collections polymorphism design-patterns

10
推荐指数
2
解决办法
6068
查看次数

Java默认接口方法具体用例

Java 9即将推出,更多功能将添加到Java接口,如私有方法.default接口中的方法是在Java 8中添加的,主要是为了支持在集合中使用lambda,而不会破坏与该语言的早期版本的复古兼容性.

在Scala中,traits中的方法非常有用.但是,Scala使用不同的方法处理traits而不是Java default.考虑多重继承解决方案或使用traits作为mixin.

除了以上使用,哪些是使用default方法的真实场景值得?这几年是否出现了一些使用它们的模式?使用这种方法可以解决哪些问题?

design-patterns interface java-8 default-method java-9

10
推荐指数
3
解决办法
2614
查看次数

nodejs中的示例Model-View-Presenter应用程序

我正在探索不同的MV*模式,并注意到MVP在.Net应用程序中使用非常多,但几乎没有其他地方.
似乎包含它的唯一其他大框架是GWT,但仅限于某些部分.

  1. 为什么MVP是微软的东西(为什么它在其他语言中几乎不受欢迎)?
  2. 是否有使用MVP的nodejs应用程序/项目(最好是我可以查看的源代码)?

.net mvp node.js

8
推荐指数
1
解决办法
2363
查看次数

什么取代了函数式编程中的MVC模式?

我是一名MVC Web开发人员,他对编写Web应用程序的函数式编程非常感兴趣(具体来说,我被Erlang和Cowboy迷住了.)

我在找到/ resources的答案时遇到的问题是用什么模式替代FP中的MVC.

显然,ORM的概念在FP中是荒谬的,因为它不是面向对象的,那么用什么代替持久性逻辑呢?通常只是构建一个使用库来创建与数据存储区接口的函数的模块,还是有类似于ORM的工具?

建议和资源链接都将受到高度赞赏.Erlang/Cowboy特别帮助的奖励积分.谢谢.

erlang orm functional-programming cowboy

5
推荐指数
1
解决办法
3451
查看次数

在Clojure中声明宏中的设计模式

Lisp的优点之一是Macros.我一直在读Java,你一次又一次地编写设计模式.不是在Lisp/Clojure中.
在Lisp/Clojure中,您将在宏中声明模式,并且您只需编写实际代码.

好的,好看和花花公子,但看到相信.

你能不能给我(或参考我)一个代码示例 - 最好是Clojure-关于如何在宏中声明一个设计模式?

lisp jvm design-patterns metaprogramming clojure

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

Haskell演示了OOP设计模式的等价物

有人声称OOP设计模式与函数式语言无关.是否有代码演示如何在Haskell中实现每个模式?特别是,完整的演示还必须展示如何表示对象,OO多态性等.

haskell design-patterns

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

Python中的`Builder`设计模式是否过时了?

我正在阅读这篇关于 Scala 设计模式的文章,他们提出了 Builder 模式与 Java 相关的论点,因为它允许使用以下代码:

CarBuilder carBuilder = new CarBuilder()
carBuilder.setSeats(2)
carBuilder.setSportsCar(true)
carBuilder.setTripComputer(true)
carBuilder.setGPS(false)
Car car = carBuilder.build()
Run Code Online (Sandbox Code Playgroud)

与更容易混淆的形式:

Car car = new Car(2, true, true, false)
Run Code Online (Sandbox Code Playgroud)

他们后来表示:

在像 Scala 这样允许你在传入参数时命名参数的语言中,构建器模式大多已经过时......

这是否与 Python 类似,因为您可以在任何调用中命名关键字参数,或者这种设计模式是否有一些合理的应用?

python design-patterns builder

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