What is the difference between the Front Controller and Intercepting Filter patterns?

  • Front Controller pattern acts as a single entry point for all incoming requests, while the Intercepting Filter pattern is used to filter requests before they are processed by the target resource.
  • Front Controller pattern handles incoming requests and dispatches them to the appropriate handlers, while the Intercepting Filter pattern is used to filter incoming requests and modify them before they reach the target.
  • Front Controller pattern is used for request processing in a centralized manner, while the Intercepting Filter pattern is used for request processing in a more modular and flexible manner.
  • Front Controller pattern provides a centralized request handling mechanism that dispatches requests to individual handlers based on the request URL. Intercepting Filter pattern provides a way to intercept requests, manipulate request data and modify responses before they are sent to the target resource.
The Front Controller pattern provides a centralized request handling mechanism, while the Intercepting Filter pattern provides a way to intercept and modify incoming requests before they are processed by the target resource.

What is Interpreter pattern?

  • A design pattern that converts a request into a standalone object, allowing the client to parametrize objects with different requests, queue a request, or log requests
  • A design pattern that creates objects by cloning existing objects, rather than creating new instances from scratch
  • A design pattern that implements a specialized language, allowing the client to express complex operations in a simplified manner
  • A design pattern that uses shared objects to support large numbers of similar objects efficiently
Interpreter pattern is a design pattern that implements a specialized language, allowing the client to express complex operations in a simplified manner. The pattern involves creating an interpreter class that evaluates expressions in the language, and performs the operations specified by the expressions. This pattern can be useful in situations where you want to allow the client to specify complex operations in a concise and easily understandable manner.

What are J2EE Patterns?

  • A set of design patterns for software development using the C++ programming language
  • A set of design patterns for software development using the Java programming language
  • A set of design patterns for software development using the Python programming language
  • A set of design patterns for software development using the Ruby programming language
J2EE Patterns are a set of design patterns for software development using the Java programming language. These patterns provide solutions to common problems that arise in J2EE-based software development, such as implementing security, managing transactions, and integrating with other systems.

What is Service Locator 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 provides a centralized object registry and access to services by using a registry.
  • An architectural pattern that separates an application into objects, implementing a user interface and interface communication.
The Service Locator pattern is a J2EE design pattern that abstracts the way to look up and access objects. The objects are managed in a registry, which can be queried for services by client objects.

Is Repository Pattern as same as Active Record Pattern?

  • No, the Repository Pattern is used for complex data access, while the Active Record Pattern is used for simple data access.
  • No, the Repository Pattern is used for data access in multiple data sources, while the Active Record Pattern is used for data access in a single data source.
  • No, the Repository Pattern provides an abstraction over the data access layer, while the Active Record Pattern combines the data access and business logic in a single object.
  • Yes, the Repository Pattern and the Active Record Pattern are equivalent.
The Repository Pattern and the Active Record Pattern are different, as the Repository Pattern provides an abstraction over the data access layer, while the Active Record Pattern combines the data access and business logic in a single object.

What is Adapter 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 promotes the loose coupling between objects, making the system easier to maintain and extend
Adapter pattern is 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. This pattern involves creating a wrapper class that implements the target interface and delegates calls to the adaptee object. The adapter acts as a bridge between the adaptee and client, allowing them to work together even if their interfaces are not compatible.

What is Business Delegate pattern?

  • A design pattern that promotes loose coupling by keeping the presentation layer separate from the business layer
  • A design pattern that provides a simplified interface to a set of services
  • A design pattern that reduces the coupling between presentation-tier clients and business services
  • A design pattern that separates the business logic and presentation logic in an application
Business Delegate pattern provides a simplified interface to a set of services to reduce the coupling between presentation-tier clients and business services.

When would you use the Builder Pattern? Why not just use a Factory Pattern?

  • Use Builder Pattern when the construction process is complex with many options and Factory Pattern when the process is simple.
  • Builder Pattern is used when you want to build objects step by step, while Factory Pattern is used when you need to create objects with a single method call.
  • Use Builder Pattern when the number of object's attributes is large, while Factory Pattern is used when you need to hide the creation process.
  • Builder Pattern is used when objects cannot be created in a single step, while Factory Pattern is used when the creation process is simple.
The Builder Pattern is used when the construction of an object is complex, and it allows you to build objects step by step, with each step having a different number of options. This is useful when you want to provide a clean API for creating objects, without exposing the details of the creation process. The Factory Pattern, on the other hand, is used when you need to create objects with a single method call. This is useful when the creation process is simple, and you don't need to provide a clean API for creating objects.

What is the difference between Strategy design pattern and State design pattern?

  • Strategy pattern is used for behavior that can change at runtime, State pattern is used for behavior that changes based on the state of the object.
  • Strategy pattern is used to change the behavior of an object based on its state, State pattern is used to change the behavior of an object at runtime.
  • Strategy pattern is used to change the behavior of an object based on the context, State pattern is used to define a set of states and transition between them.
  • Strategy pattern is used to define a set of algorithms, State pattern is used to change the behavior of an object based on its internal state.
The Strategy design pattern allows an object to change its behavior at runtime, while the State design pattern changes the behavior of an object based on its internal state.

How to prevent cloning of a singleton object in Java?

  • By declaring the class as final
  • By declaring the clone method as final
  • By declaring the clone method as private
  • By throwing a CloneNotSupportedException in the clone method
The best way to prevent cloning of a singleton object in Java is by throwing a CloneNotSupportedException in the clone method. This will make the class not cloneable and prevent other objects from attempting to create a copy of the singleton object.