When should I use Active Record vs Repository Pattern?

  • Active Record is best suited for small projects and simple data access.
  • Repository Pattern is best suited for large projects or complex data access.
  • Use Active Record for performance and simplicity.
  • Use Repository Pattern for scalability and maintainability.
It depends on the size and complexity of the project as well as the desired level of control over data access. In general, the Repository Pattern is a better choice for large or complex projects where scalability and maintainability are important, while the Active Record pattern is better suited for small projects and simple data access.

What is Composite pattern?

  • A design pattern that allows complex objects to be built up from simpler objects, through the creation of a composite object that is made up of multiple components. The pattern involves creating a common interface for both composite and leaf objects, allowing the client to treat both types of objects in a uniform manner
  • A design pattern that allows objects with incompatible interfaces to work together by converting the interface of one object into an interface expected by the client
  • A design pattern that creates objects by cloning existing objects, rather than creating new instances from scratch
  • A design pattern that creates objects in a step-by-step manner, allowing for more control over the object creation process
Composite pattern is a design pattern that allows complex objects to be built up from simpler objects, through the creation of a composite object that is made up of multiple components. The pattern involves creating a common interface for both composite and leaf objects, allowing the client to treat both types of objects in a uniform manner. This pattern can be useful in situations where objects can be composed of other objects, and the relationship between the objects needs to be managed in a structured way.

What is the State pattern?

  • A creational design pattern that provides a way to instantiate an object in a superclass, but allow subclasses to alter the type of objects that will be created.
  • A design pattern used to ensure a class has only one instance, while providing a global access point to this instance for the entire system.
  • A software design pattern that enables an object to be passed around as a value.
  • The State pattern is a behavioral design pattern that allows an object to alter its behavior when its internal state changes. It appears as if the object changed its class.
The State pattern is a behavioral design pattern that allows an object to alter its behavior when its internal state changes. It appears as if the object changed its class.

What are the entities of the Intercepting Filter pattern?

  • Factory, Product, Concrete Product, Creator
  • Filter, Filter Chain, Target, Filter Manager
  • Observer, Subject, Client, Concrete Observer
  • Singleton, Thread Safe Singleton, Lazy Initialization
The entities of the Intercepting Filter pattern are: Filter, Filter Chain, Target, and Filter Manager. The Filter performs the pre-processing on the request, the Filter Chain holds a list of filters and passes the request to each one, the Target is the resource that handles the request, and the Filter Manager manages the filters and decides which filter to use.

When should I use Composite design pattern?

  • When you need to represent a complex tree-like structure.
  • When you want to apply a behavior to multiple objects at once.
  • When you want to hide the implementation details of a class.
  • When you want to implement a cache for your data.
The Composite design pattern is used to represent a tree-like structure, where each node in the tree can be either a leaf node or a composite node. The leaf nodes represent the individual objects, while the composite nodes represent the composition of objects. The Composite pattern allows you to treat both composite and leaf objects in a uniform manner, making it easier to manage complex structures.

What is Transfer Object pattern?

  • A behavioral pattern that describes how to distribute the communication between objects.
  • A creational pattern that provides a way to create objects without specifying the exact class of object that will be created.
  • A structural pattern that defines the ways of organizing and structuring the objects that are being sent from one place to another.
  • An architectural pattern that defines a middleware component that is used to transfer data between different systems or software components.
The Transfer Object pattern is a design pattern that is used in the context of remote method invocation (RMI) systems, where an object is transferred from one JVM to another JVM through serialization. The transfer object is an object that carries data between processes.

What is the purpose of the Composite Entity pattern?

  • To create objects with complex behavior.
  • To define a default behavior for an object.
  • To manage the lifecycle of objects.
  • To represent an entity that is composed of multiple objects to model a more complex entity.
The Composite Entity pattern aims to represent an entity that is composed of multiple objects to model a more complex entity, allowing the composition to be managed as a single entity.

What is Filter pattern?

  • A design pattern that allows objects with incompatible interfaces to work together by converting the interface of one object into an interface expected by the client
  • A design pattern that creates objects in a step-by-step manner, allowing for more control over the object creation process
  • A design pattern that filters a set of objects based on certain criteria and returns a subset of those objects
  • A design pattern that separates an object's implementation from its interface, allowing the two to vary independently
Filter pattern is a design pattern that filters a set of objects based on certain criteria and returns a subset of those objects. The pattern involves creating a filter interface that defines the criteria for filtering objects, and then implementing that interface for each specific filter. The objects being filtered are then passed through the filters, with only the objects that meet the criteria being returned. This pattern can be useful in situations where a large number of objects need to be filtered based on specific criteria.

What is Bridge pattern?

  • A design pattern that allows objects with incompatible interfaces to work together by converting the interface of one object into an interface expected by the client
  • A design pattern that creates objects by cloning existing objects, rather than creating new instances from scratch
  • A design pattern that creates objects in a step-by-step manner, allowing for more control over the object creation process
  • A design pattern that separates an object's implementation from its interface, allowing the two to vary independently. The pattern involves creating an abstraction layer that acts as a bridge between the implementation and interface, allowing the implementation to be changed without affecting the client code
Bridge pattern is a design pattern that separates an object's implementation from its interface, allowing the two to vary independently. The pattern involves creating an abstraction layer that acts as a bridge between the implementation and interface, allowing the implementation to be changed without affecting the client code. This pattern can be useful in situations where an object's implementation needs to be changed frequently, or where multiple implementations are needed for the same interface.

Name some benefits of CQRS Pattern

  • Improved database performance by caching results in memory.
  • Improved scalability and maintainability.
  • Reduced likelihood of race conditions and deadlocks in multithreaded applications.
  • Simplified inter-process communication.
CQRS has many benefits, including improved scalability and maintainability due to separating the read and write operations into separate models, and reducing the likelihood of race conditions and deadlocks in multithreaded applications.