Дизайн моделей и Scala - PullRequest
       12

Дизайн моделей и Scala

13 голосов
/ 22 октября 2010

Я пишу этот вопрос для ведения реестра шаблонов проектирования, связанных с Scala, шаблонов стандартов или только с этого языка.

Связанные вопросы:

Спасибо всем, кто внес свой вклад

Ответы [ 3 ]

7 голосов
/ 22 октября 2010

Давайте начнем с «Синглтон-паттерна» :

object SomeSingleton //That's it

Я бы дополнительно предложил "Использование функций высшего порядка" . Вместо е. г. перебирая коллекцию самостоятельно, вы предоставляете функции методам, которые предоставляют классы.

В Scala вы в основном говорите, что намереваетесь делать:

//declare some example class
case class Person(name: String, age: Int) 

//create some example persons
val persons = List(Person("Joe", 42), Person("Jane", 30), Person("Alice", 14), Person("Bob", 12))

//"Are there any persons in this List, which are older than 18?"
persons.exists(_.age > 18)
// => Boolean = true

//"Is every person's name longer than 4 characters?"
persons.forall(_.name.length > 4)
// => Boolean = false

//"I need a List of only the adult persons!"
persons.filter(_.age >= 18)
// => List[Person] = List(Person(Joe,42), Person(Jane,30))

//"Actually I need both, a list with the adults and a list of the minors!"
persons.partition(_.age >= 18)
// => (List[Person], List[Person]) = (List(Person(Joe,42), Person(Jane,30)),List(Person(Alice,14), Person(Bob,12)))

//"A List with the names, please!"
persons.map(_.name)
// => List[String] = List(Joe, Jane, Alice, Bob)    

//"I would like to know how old all persons are all together!"
persons.foldLeft(0)(_ + _.age)
// => Int = 98

Выполнение этого в Java означало бы касаться элементов коллекции самостоятельно и смешивать логику вашего приложения с кодом управления потоком.

Дополнительная информация о классах Коллекции.


Эта замечательная бумага EPFL о Может быть интересна и модель наблюдений .


Классы типов - это один из подходов к структурированию общих свойств классов, где наследование на самом деле не подходит.

6 голосов
/ 22 октября 2010

Подобный список уже составлен. См. https://wiki.scala -lang.org / display / SYGN / Дизайн + Шаблоны

1 голос
/ 05 мая 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...