Lyu*_*riv 0 language-agnostic oop design-patterns
我注意到初学者很难开始使用设计模式.理解设计模式结构需要大量时间.将设计模式应用于您的练习需要花费大量时间.同意,如果你不熟悉它们,你不能第一次看到各种类型的设计模式之间的差异.如果您的类具有合适的名称,则可以部分解决此问题.如果你遗漏了一些编写代码的规则,或者你对设计模式没有那么有经验,你也可以打破你实现的设计图案类结构.编译器可以保护您并帮助您实现接口 - 如果您没有实现接口,则无法编译您的应用程序.这是一种安全可靠的方法.如果编译器在实现设计模式类时也可以保护您?看,很多编程语言都支持"foreach"语句.如果编程语言可以为工厂,桥梁,代理,纪念品等提供支持?如果它可能是真的,你可以使用类似下面的东西来应用抽象和具体的工厂模式(我更喜欢C#作为伪代码的基本语言;它假设使用了上下文关键字):
public abstract factory class AF {
public product AP1 GetProduct1();
public product AP2 GetProduct2();
};
public concrete factory class CF1 : AF {
public product CP1 GetProduct1() { ... }
public product CP2 GetProduct2() { ... }
};
Run Code Online (Sandbox Code Playgroud)
它认为它可以帮助您理解新的源并保持应用程序源代码结构的完整性.你怎么看待这件事?
如果我理解你所说的话,你认为新的语言特性应该克服通常与实现设计模式相关的样板代码的需要.
这已经发生了,这并不是什么新鲜事.
以单身人士为例,这是最着名的模式之一.每个人都知道如何实现它:声明构造函数private,将对象的单个全局实例保留为static属性,并添加一个public方法来检索它.
对于概念上非常简单的内容,这几行代码.
在Scala中,您不需要任何样板来创建单例.为了补充class关键字,Scala有一个object关键字,它声明了一个单例对象:
object MainApp {
def main(args: Array[String]) {
println("Hello, world!")
}
}
Run Code Online (Sandbox Code Playgroud)
在运行时,将有一个单一的全局实例MainApp.没有必要使用实例化它new; 事实上,你根本无法使用new MainApp.