Often it is not obvious how to implement a given design pattern in a language. Sometimes it is difficult or cumbersome. Are there any languages built to make using design patterns easy and effective?
Consider these points:
- Design patterns indicate disconnect between the desired functionality and what the programming language provide
- This disconnect can be easily created artificially by taking some concept from one language and trying to implement it in different language
- Most of the existing design patterns have been found like that -- some nice smalltalk solution does not directly fit to c++, so it becomes a design pattern
- Nice thing about design patterns is that it allows programmers to think more about how to solve the problem, and less about how the programming language features work
- There really cannot be any language that helps implementing design patterns, since every language has different patterns that are common but still requires a pattern. So anything you do in language design, there is always a way to find a pattern which you didn't consider in the original design.
The important thing is that a design pattern isn’t intrinsic to a language; it’s quite literally just a code pattern at which many developers have independently arrived. The design patterns that emerge in a particular language are considered the idiomatic, preferred way of solving certain kinds of problems.
Sure, there are countless MVC “frameworks” out there, but they’re really just using MVC as a label for the underlying good practice—modularity and orthogonality between data model, presentation, and user interaction.
A language cannot be designed to make “using design patterns” easy and effective, because design patterns emerge from the design of the language. You cannot design a language around patterns that will appear as a result of its own strengths and deficiencies. All you can do is design a more expressive and powerful one. If the popular idioms and patterns for a given language are cumbersome to implement, it simply means that the language itself is cumbersome.
Tautologically: in a more expressive language, it’s easier to express yourself.
Design patterns (idioms) are usually a symptom of a programming languages short-commings. As languages improve, patterns will become intrinsic.
I don't think it's the language feature to offer design pattern, infact no language does that. Developers themselves design patterns and makes use of the language in that. MVC, MVP, MVVC are design patterns which can be applied to any language.
Also, there are some IDE, that help you leverage the design patterns. Like in case of Visual Studio 2010, you can make use MVC design pattern by selecting the ASP.NET MVC template.