citeseerx.ist.psu.edu — Subclassing errors, OOP, and practically checkable rules to prevent them
phppatterns.com — Design Patterns Berserk: Hello World на PHP 5 с использованием паттернов MVC, Observer, Strategy, Decorator, Factory Method и Facade
lambda-the-ultimate.org — мифы ООП на LtU
akuklev.livejournal.com — занятный, хотя и местами спорный текст о некоторых недостатках ООП (без множественной диспетчеризации):
"a + b + c — это вовсе не a.add(b).add(c)
a + b + c = (AdditiveSemigroup.[+] a, b, c)
А вот функция AdditiveSemigroup.[+] должна извлекать наиближайшего общего предка a, b и c, являющгося имплементирующим интерфейс AdditiveSemigroup, в котором должна иметься статическая функция add(a, b), выполняющая аксиомы полугруппы. И вот этот AdditiveSemigroup.[+] должен вызывать эту функцию для сложения. Причём, оптимизируя вызовы для параллелизации, т.е. превращая список в бинарное дерева и редуцируя его. Не (((a + b) + c) + d), а ((a + b) + (c + d)).
А ежели аддитивная семигруппа ещё явлется и моноидом, то AdditiveSemigroup.[+]() должна выплёвывать .unit."
"a + b + c — это вовсе не a.add(b).add(c)
a + b + c = (AdditiveSemigroup.[+] a, b, c)
А вот функция AdditiveSemigroup.[+] должна извлекать наиближайшего общего предка a, b и c, являющгося имплементирующим интерфейс AdditiveSemigroup, в котором должна иметься статическая функция add(a, b), выполняющая аксиомы полугруппы. И вот этот AdditiveSemigroup.[+] должен вызывать эту функцию для сложения. Причём, оптимизируя вызовы для параллелизации, т.е. превращая список в бинарное дерева и редуцируя его. Не (((a + b) + c) + d), а ((a + b) + (c + d)).
А ежели аддитивная семигруппа ещё явлется и моноидом, то AdditiveSemigroup.[+]() должна выплёвывать .unit."
bik-top.livejournal.com — исключения: иерархии, misusage и best practices
dev.by — паттерны проектирования, бессмысленные и беспощадные. "...в языках ML-семейства есть прямое отражение Абстрактной Фабрики. Например, в Haskell, есть конструкция data..."
blog.ezyang.com — 23 паттерна банды четырёх в терминах хаскельного ФП, via @Sectoid
lambda-the-ultimate.org — Objects to Unify Type Classes and GADTs