it-swarm-eu.dev

Designové vzory bez OOP?

Slyšel jsem pouze termín „návrhový vzor“, který se používá pro objektově orientovaný kód, a GoF vzory zahrnují pouze OOP návrhové vzory, ale návrhové vzory jsou elegantní řešení pro běžně se vyskytující problémy s programováním, že? Nic tam neříká, že musí být omezeny na OOP, že?

Chtěl bych vidět několik příkladů návrhových vzorů mimo oblast objektově orientovaného programování. Máte jakýkoli? Existují dokonce takové (žádná kniha, stejně jako kniha GoF), nemusí být nutně napsána, měly by být použity, to je dost)?

Mohou být specifické pro některé programovací jazyky, ale upřednostňují se obecné vzorce (na úrovni paradigmatu), jiné vzory než objektově orientované.

70
Anto
25
sakisk

Ve skutečnosti je to paradox - jedním z nejpopulárnějších Non-OO vzorů je ... "Třída".

Protože OO byl vynalezen v jiných jazycích než OO, museli jej vývojáři simulovat (a právě teď to dělají) - takže se tento vzorec zrodil. LISP a C jsou příklady toho.

Ale vezměte mou radu: Nedělejte častou chybu - nepoužívejte vzory pouze proto, že je to v pohodě, potřebujete závažné důvody pro zdůvodnění použití vzoru (alespoň OO ones ).

Vezměme si například vzorec příkazů - i když je to pěkné a odděluje volajícího od přijímače, nemělo by být použito, pokud to skutečně nepotřebujete - protože operace by měly být vyjádřeny pomocí sloves - což znamená metody. A pomocí příkazů všude, kde byste skončili s partou kompletně decentralizovaných OO-lambd -> totéž by platilo pro mnoho strategií.

12
Kamil Tomšík

LtU zmiňuje , že Jeremy Gibbons píše knihu o vzorcích ve funkčním programování. Podívejte se na vzory pana Gibbona v blogu Functional Programming , kde najdete několik upoutávek. Doporučuje číst jeho příspěvky od nejstarších po nejnovější.

Jeho papír Návrhové vzory jako obecné programy pro datové typy vyšších řádů (pdf) funkčně modelují Gang Čtyři vzory: Kompozitní, Iterátor, Návštěvník a Tvůrce. Popisuje vzorce programování s rekurzivními rovnicemi v Origami programování (záhyby a odvíjení).

11
Corbin March

"Návrhový vzor" je ve skutečnosti eufemismus pro "řešení". Návrhové vzory byly vynalezeny k řešení nedostatků a nedostatků v OO jazyky . Například si vezměte iterátorový vzor, ​​který nakonec vedl k zavedení kolekcí v Javě. Groovy zbavil se mnoha dalších vzorů jejich převedením na jazykové funkce: Už nepotřebujete vzorový dekoratér, protože můžete přidat metody do existujících tříd v Groovy.

To znamená, že můžete najít designové vzory všude. Ve skutečnosti lze každou „osvědčenou praxi“ považovat za jednoduchou formu vzoru vzoru.

11
Aaron Digulla

Existují návrhové vzory SQL .

A také existují některé funkční vzory - viz zde pro scala.

10
Oded

Namísto pojmenování návrhových vzorů od jiných dodavatelů bych vám chtěl uvést několik příkladů knih, které mají mnoho vzorů (v nich budou některé vzory stále OO):

Snad to pomůže

8
KeesDijk

Ve funkčním programování (zejména Haskell) existuje mnoho vzorců a idiomů, které se na OOP příliš dobře nemapují. Fantomové typy jsou dobře známým příkladem a mnohem více najdete na wiki stránka haskell na Idioms .

2
yatima2975

Dobrým příkladem vzorů bez OOP je můj katalog absolutních oblíbených vzorů: Organizační vzory agilního vývoje softwaru, James O. Coplien . Tato kniha není o softwarových vzorcích, je o lidech, katalogu pro vytváření úspěšných týmů. Tuto knihu by si měl přečíst každý manažer!

1
JuanZe

Modulární programování je docela populární u numerických knihoven a matematických aplikací (numerický software je notoricky těžko modelovatelný pomocí objektově orientovaných vzorů, hlavně proto, že je jen velmi málo, co lze zapouzdřit).

1
quant_dev

Rád si představím Data Strucutres, jako jsou Fronty, propojené seznamy, stromy, grafy atd. Jako vzory. Definují určité vzory pro ukládání dat a jejich zpracování. Mohou se zdát primitivní ve srovnání s Gang of Four's high-end plácat, ale oni jsou vzory i přesto. Co by se stalo, kdyby někdo implementoval zásobník jako FIFO namísto LIFO a naopak pro frontu) a pojmenoval je jinak?

0
DPD