I want to know are there any design patterns for web besides MVC?

I know there are design patterns as: Registry, Observer, Factory, ActiveRecord ,... and MVC a set of other design patterns and folder structure.

Is there design pattern like MVC is a set of other design patterns?

Edit : my programming language is PHP.


8 Answers 8


There are different patterns in software development; MVP, MVVM, MVC, etc. are some of the well-known ones. However, you have to define the specific problem or technology that you are intending to solve or use.

enter image description here

Each of these patterns is good to solve some specific sets of problems. For example, the MVP (Model View Presenter) pattern helps to introduce separation of concerns in ASP.NET WebForms development. It consists of splitting up the responsibilities for gathering, displaying, and storing data from a web page into separate objects: a Model object, a View object, and a Presenter object.

The most famous general cookbook of design patterns is Gang of Four (GoF) design patterns.

enter image description here

Edit: i suppose that you are more interested in implementing design patterns on .NET platform

  • 1
    +1 are we going to live with MVC defined as a pattern, or a technique which will see soon or near see it's successor? Jul 26, 2012 at 5:15
  • 6
    +1 but MVP, MVVM and MVC are all variations of the same theme: separating (g)ui from model logic and having some third party (controller, presenter) mediate between them. Jul 26, 2012 at 6:34
  • 2
    @Mr-Moqadam: MVC looks like an overkill and complicated at first. It does what you should do, separating UI, logic and data. The only thing that's sure in software development is change. And as a rule of thumb; 20% is development, 80% is maintaining. From that perspective, MVC is surely worth the effort. It's also the most basic pattern to achieve this, I guess. Jul 26, 2012 at 7:30
  • 3
    @Mr-Moqadam: No, it helps you a lot, even if you are alone. And especially in large projects. Jul 26, 2012 at 9:59
  • 1
    @Mr-Moqadam Who ever said that MVC is a team development pattern? I have been developing for a long time alone using PHP and MVC is mandatory for me to keep things maintainable. Have you tried using any PHP frameworks?
    – Songo
    Jul 26, 2012 at 10:20

A nice pattern, which I came accross a few weeks ago, is MOVE. It looks a bit more sophisticated as MVC, but is based on the same principle. One downside of MVC is your controllers can get really, really big. Using the MOVE pattern, you'll handle this issue, a little bit.

Other patterns, named by the others, are also good alternatives.

  • I thought MVC promoted using thin Controllers?! You know the saying "Thin Controllers & Fat Models"
    – Songo
    Jul 26, 2012 at 10:24
  • So it does, but in reality controllers tend to get pretty fat.
    – Jan_V
    Jul 26, 2012 at 11:56
  • 2
    That's because you put domain logic into controllers, which wasn't the intention of the original Krassner&Pope kind of MVC. Controllers in the original fashion are about input handling, eg. connecting mouse clicks on (X,Y) coordinate into a model operation (like, increasing temperature in a thermostat app). That said, most of the controller layer in the MVC sense is fully-automated, and therefore, invisible to the application developer in a framework.
    – Aadaam
    Jul 26, 2012 at 13:25
  • is MOVE like flux Apr 6, 2015 at 18:55

The first thing to establish is what exactly you need to do, to decide whether or not a framework and/or MVC (or other design pattern) would be of benefit.

Frameworks are there to provide a consistent platform for development whilst usually providing solutions to common programming requirements (such as Database interaction, form creation and validation, user authentication etc.)

For PHP at least the MVC / HMVC design pattern does tend to dominate the mainstream frameworks available (e.g. Zend, CakePHP, CodeIgniter etc.) but there are many different design patterns that one could use.

MVC is so popular because it offers an established and understood way of separating data modelling and processing logic from view/presentation layer (something which is considered desirable in order to produce robust, scalable applications).

It's important to note (and as was expressed by @Marjan Venema in a comment to @ElYusubov's answer) that MVC, MVP, MVVM and the other MVx patterns are (in principal at least) all the same 'design pattern'.

Typically different design patterns all serve (often subtly) different purposes and in several cases were developed with a specific language in mind. However a true 'design pattern' is not a hard and fast rule to programming and is really more of a philosophical / idealogical understanding of a programs implementation and design requirements and logical function(s).

Research is the best way to find out about different programming principals and best practices, here's some Wikipedia links to get you started:

In practice there's nothing stopping you from implementing your own 'pattern', IMO the best way is to learn by doing, for me at least I didn't fully understand the MVC pattern until I started trying to write a web site using it.

Once you understand some of the programming concepts and best practices you can use those to build your own system to solve the specific problems you're facing and to meet your needs, whether it conforms to an established 'pattern' or not.

If you have no specific set of problems to solve then learning one of the common frameworks is your best bet.


One of the most famous examples is Knockout.js which is a javascript framework which uses the MVVM design pattern. There is a great article here over on stack overflow comparing the MVC framework Backbone.js vs Knockout.js.

A sidenote is that the MVVM design pattern originated from Microsoft as a specialization of the PM design pattern of Martin Fowler. MVVM is used extensively by WPF applications.

  • page not found! Apr 6, 2015 at 18:56
  • 1
    @MuhammadUmer Thanks, I've updated the link. Unfortunately StackOverflow deleted that 1000+ point question. Luckily, the wayback machine does not have a strict moderation system. Apr 8, 2015 at 1:11
  • Not suprised at all ... i expect all se sites to be like this as well. Apr 8, 2015 at 14:30

As ElYusubov pointed out, the ASP.Net framework has long had MVP and MVVM patterns, if you are looking for relatively mainstream examples. One of the main differences between MVC and MVVM is how your entities are updated; MVC is better suited to the traditional stateless or semi-stateless approach of web applications. The ASP.Net framework tried to work around this by keeping your state embedded in a form (so it could be restored on each request), which made the MVP and MVVM patterns make more sense there.

With HTML5, applications are becoming more and more JavaScript-heavy, with much of their state being on the client. This may lead to a resurgence in MVVM frameworks, and Knockout JS is one example.


Most patterns in the wild are MVC, or some flavor of MVC. After all it makes sense to split up your data (Model), the representation (View) and interaction with it (Controller). If you have a look at MVC as it was founded in the 80's, you will find out it was never meant to be a web framework. Thus i found it to be far overburden in the web.

An other well known pattern would be the Service Oriented Architecture (SOA). Built on that, a modern approach would be to have an MVC (or flavor) on your server, only to expose a service you can work with. On the client side there would be an other MVC styled application, for example an HTML5 and JavaScript powered web application (Twitter or Linked In for example). The client application would use your server side service (the "View" of the server) as its Model. IMHO, this would be state of the art and will probably push server side only MVC aside.


I'm personally looking into implementing something that uses the idea of Resource Methods Representation, though at this stage it's mostly just an experiment more than anything else. It does have some compelling points in that it models a HTTP request/response better than MVC (which is meant for long-lived applications running on a single computer as opposed to short-lived request/response sessions). However, it does have the drawback that if you put methods in your resources for handling GET, POST, PUT, DELETE, etc, then your resources become coupled to the front end. I'm thinking I'm going to separate that out into another layer.


There are more than 1000 way except MVC some of them are similar to MVC and some totally different

for example :

  1. Model-Template-View - MTV
  2. Model–view–presenter - MVP
  3. Hierarchical model–view–controller HMVC
  4. Model View ViewModel- MVVM


  • 1
    this doesn't seem to offer anything substantial over points made and explained in prior 7 answers
    – gnat
    May 19, 2016 at 13:20
  • this is simplest ans of the Question I think. May 19, 2016 at 16:43

Not the answer you're looking for? Browse other questions tagged or ask your own question.