Is MVC a Design Pattern or Architectural pattern
MVC is more of an architectural pattern, but not for complete application. MVC mostly relates to the UI / interaction layer of an application. You're still going to need business logic layer, maybe some service layer and data access layer. That is, if you're into n-tier approach.
Design patterns say how to write code effectively (considering Code Metrics).
A few benefits:
- Easily Maintainable
- High Re-usability
- Readable because of abstractions
Architectural patterns say how to utilize resources effectively.
- Parallel tasks execution like programmers and graphic designers can work parallel.
- Multiple technologies can be utilized to build a software.
In MVC, a). Views can be created using javascript templates and also html can be used b). Controllers can be written .NET framework and c). Models can be written in Java - a java service may be used that returns only json data.
While in design pattern, a pattern can't be implemented in which code can be written in multiple technologies like AdminUser class in Java, Customer class in C#, Partners class in Php and a factory pattern in Ruby :); hmmm..so easy?:)
Why does one of them have to be true?
Both can be true, depending on point of view.
MVC can be an architectual pattern, if it forms the basis of the application architecture.
It can also be seen as simply a design pattern, an abstract notion that is applicable to any application.