What is Inversion of Control?
- A mechanism for managing dependencies between software components, such as libraries or services, that are required to run an application.
- A method of testing in which dependencies are replaced with mock objects to isolate the test subject from the rest of the system.
- A software design principle in which the flow of control of a system is inverted compared to the traditional approach. Instead of the system calling a component to perform a task, the component is notified when a task is ready and performs it. This leads to a more flexible and decoupled system, allowing for easier maintenance and testing.
- A technique for structuring software components into a tree-like hierarchy to organize dependencies and reduce coupling between components.
Inversion of Control is a design principle in which the flow of control in a system is inverted. Instead of a system calling components to perform tasks, components are notified when tasks are ready and perform them. This leads to a more flexible and decoupled system, allowing for easier maintenance and testing.
Name the actor classes used in Memento pattern.
- Caretaker, Originator, Memento
- Memento, Caretaker, Originator
- Originator, Caretaker, Memento
- Originator, Memento, Caretaker
The actor classes used in the Memento pattern are: Originator, Memento, and Caretaker. The Originator class is responsible for creating the memento and restoring its state. The Memento class is responsible for storing the internal state of the Originator. The Caretaker class is responsible for maintaining a list of mementos and providing the Originator with the appropriate memento at the appropriate time.
Give an example where Interpreter pattern is used?
- Interpreter pattern is used in compilers, where expressions in a programming language need to be parsed and evaluated
- Interpreter pattern is used in database management systems, where SQL queries need to be interpreted and executed
- Interpreter pattern is used in game engines, where game rules need to be interpreted and executed
- Interpreter pattern is used in web applications, where user requests need to be interpreted and processed
One example of where Interpreter pattern is used is in compilers, where expressions in a programming language need to be parsed and evaluated. The Interpreter pattern can be used to evaluate the syntax and semantics of a programming language, and generate code or perform other actions based on the results of the evaluation.
What is the Command and Query Responsibility Segregation (CQRS) Pattern?
- A pattern in which read and write operations are separated into separate models.
- A pattern that helps to avoid race conditions and deadlocks in multithreaded applications.
- A pattern used to implement inter-process communication.
- A pattern used to improve database performance by caching results in memory.
CQRS is a pattern that separates the responsibilities of querying data (read) from modifying data (write) into separate models, improving scalability and maintainability of the application.
What is Null Object pattern?
- A design pattern in which a special object, called the null object, is used to represent the absence of a value, avoiding the need for explicit checks for null values
- A design pattern in which an object, called the context, holds a reference to an instance of one of several possible concrete state objects, each of which represents a distinct state of the context and implements a common state interface
- A design pattern in which an object, called the decorator, adds or overrides behavior of an existing object, dynamically
- A design pattern in which an object, called the prototype, is used as a template to create new objects, without specifying their concrete classes
The Null Object pattern is a design pattern in which a special object, called the null object, is used to represent the absence of a value, avoiding the need for explicit checks for null values. The Null Object pattern is used to provide a default implementation of an interface, reducing the amount of error-prone null checks in the code. The Null Object pattern can also be used to simplify the code and reduce coupling by eliminating the need for explicit checks for null values.
What is the difference between the Decorator and Flyweight patterns?
- The Decorator pattern is used to dynamically add or override behavior of an object, while the Flyweight pattern is used to reduce the number of objects created by sharing objects that are costly to create.
- The Decorator pattern is used to dynamically add or override behavior of an object, while the Flyweight pattern is used to share objects that are costly to create.
- The Decorator pattern is used to reduce the number of objects created by sharing objects that are costly to create, while the Flyweight pattern is used to dynamically add or override behavior of an object.
- The Decorator pattern is used to share objects that are costly to create, while the Flyweight pattern is used to dynamically add or override behavior of an object.
The Decorator pattern is used to dynamically add or override behavior of an object, while the Flyweight pattern is used to share objects that are costly to create.
What is the purpose of the Decorator design pattern?
- To attach additional responsibilities to an object dynamically.
- To create objects that are interchangeable with their base classes.
- To ensure that a class has only one instance and provide a global point of access to that instance.
- To manage the flow of control between objects in a complex system.
The Decorator design pattern is used to attach additional responsibilities to an object dynamically. This allows for greater flexibility and modularity in the design of a system, as well as the ability to add or remove responsibilities as needed.
How can you create Singleton class in Java?
- By declaring a private constructor and a public static method that returns the only instance of the class
- By declaring all of its variables and methods as final
- By declaring all of its variables and methods as static
- By implementing the Cloneable interface
A Singleton class in Java can be created by declaring a private constructor and a public static method that returns the only instance of the class. This ensures that there is only one instance of the class in the JVM and that it can be easily accessed by other objects in the system.
What is the purpose of the MVC pattern?
- The Model-View-Controller (MVC) pattern is used to create a modular and scalable code structure. The Model represents the data, the View displays the data, and the Controller handles user interactions and updates the Model.
- The Model-View-Controller (MVC) pattern is used to create a simple, flexible and reusable code structure. The Model represents the data, the View displays the data, and the Controller handles user interactions and updates the Model.
- The Model-View-Controller (MVC) pattern is used to provide a common interface for accessing application data. The Model represents the data, the View displays the data, and the Controller manages the flow of data between the Model and the View.
- The Model-View-Controller (MVC) pattern is used to separate application logic from presentation logic and data management. The Model represents the data, the View displays the data, and the Controller manages the flow of data between the Model and the View.
The MVC pattern separates application logic into three distinct components, the Model, View and Controller, in order to create a flexible, reusable and scalable code structure.
What is the Deadly Diamond of Death?
- The Deadly Diamond of Death is a situation in which a class has too many responsibilities and becomes overly complex.
- The Deadly Diamond of Death is a situation in which a class inherits from two classes with conflicting attributes.
- The Deadly Diamond of Death is a situation in which a class inherits from two classes with conflicting implementations of a method.
- The Deadly Diamond of Death is a situation in which multiple inheritance results in ambiguity and complexity in the inheritance hierarchy of a system.
The Deadly Diamond of Death is a situation in which multiple inheritance results in ambiguity and complexity in the inheritance hierarchy of a system. This can lead to difficulty in maintaining the system and understanding its behavior.