-
Notifications
You must be signed in to change notification settings - Fork 3
Theia design pattern selection
Design patterns are typical solutions to commonly occurring problems in software design. They are like pre-made blueprints that you can customize to solve a recurring design problem in your code. There are the following three main patterns by type:
- Creational patterns, These patterns provide various object creation mechanisms, which increase flexibility and reuse of existing code.
- Abstract Factory. Allows the creation of objects without specifying their concrete type.
- Builder. Uses to create complex objects.
- Factory Method. Creates objects without specifying the exact class to create.
- Prototype. Creates a new object from an existing object.
- Singleton. Ensures only one instance of an object is created.
- Structural patterns, These patterns explain how to assemble objects and classes into larger structures while keeping these structures flexible and efficient.
- Adapter. Allows for two incompatible classes to work together by wrapping an interface around one of the existing classes.
- Bridge. Decouples an abstraction so two classes can vary independently.
- Composite. Takes a group of objects into a single object.
- Decorator. Allows for an object’s behavior to be extended dynamically at run time.
- Facade. Provides a simple interface to a more complex underlying object.
- Flyweight. Reduces the cost of complex object models.
- Proxy. Provides a placeholder interface to an underlying object to control access, reduce cost, or reduce complexity.
- Behavioral patterns, These patterns are concerned with algorithms and the assignment of responsibilities between objects.
- Chain of Responsibility. Delegates commands to a chain of processing objects.
- Command. Creates objects which encapsulate actions and parameters.
- Interpreter. Implements a specialized language.
- Iterator. Accesses the elements of an object sequentially without exposing its underlying representation.
- Mediator. Allows loose coupling between classes by being the only class that has detailed knowledge of their methods.
- Memento. Provides the ability to restore an object to its previous state.
- Observer. Is a publish/subscribe pattern which allows a number of observer objects to see an event.
- State. Allows an object to alter its behavior when its internal state changes.
- Strategy. Allows one of a family of algorithms to be selected on-the-fly at run-time.
- Template Method. Defines the skeleton of an algorithm as an abstract class, allowing its sub-classes to provide concrete behavior.
- Visitor. Separates an algorithm from an object structure by moving the hierarchy of methods into one object.
The user can select one of the patterns and a description of pattern along with some fields appears. In the text fields the user should provide the names he wants for the java files that are going to be created, or he/she can select an existing file. Finally the extension creates and/or changes the appropriate java files in order to create their connections and structure according to the selected pattern. Moreover, there is a Wizard option that can help the user decide which pattern is needed according some quick questions.