User:Rpothir/sandbox

Objects
Objects are described as things that have machine like behaviors that can be plugged together to work in concert. These objects play well-defined roles and encapsulate scripted responses and information.


 * Object Neighborhoods : Another term for subsystem. It is a logical grouping of collaborators.
 * Responsibilities : A responsibility is an obligation to perform a task or know information. These are further categorized according to their usage scenario.
 * Public Responsibilities : Public responsibilities are the responsibilities an object offers as services to others and the information it provides to others.
 * Private Responsibilities : Private responsibilities are the actions an object takes in support of public responsibilities
 * Subresponsibilities : These responsibilities come into existence whenever a large or complicated responsibility is split up into smaller ones. They are further categorized by what they do.
 * Subordinate Responsibilities : These are the major steps of the subresponsibility.
 * Sequencing Responsibility : This responsibility refers to the sequencing of the execution of subordinate responsibilities.

Control style
An important part in the responsibility-driven design process is the distribution of control responsibilities that results in developing a control style. A control style is concerned about the control flow between subsystems.


 * Concept of Control : The responsibilities and collaborations among the classes.
 * Control Centers : An important aspect of developing a control style is the invention of so-called control centers. These are places where objects charged with controlling and coordinating reside.
 * Control Style Variations : A control style comes in three distinct variations. These are not precise definitions though since a control style can be said to be more centralized or delegated than another.

Centralized control style
This control style inflicts a procedural paradigm on the structure of the application and places major-decision making responsibilities in only a few objects or single object.


 * Types
 * Call-return model : The control of the objects in the application is in hierarchical way. Control starts at root and moves downwards. It is used in a sequential model.
 * Manager model : The control of the objects in the application is in with only one object. Generally, it is implemented in concurrent models. It can also be implemented in sequential model using case statement.


 * Advantages
 * Application logic is in one place.


 * Disadvantages
 * Control logic can get overly complex
 * Controllers can become dependent on information holders' contents
 * Objects can become coupled indirectly through the actions of their controller
 * The only interesting work is done in the controller

When decisions to be made are few, simple, and related to a single task.
 * When to use

Delegated control style
A delegated control style lies in between a centralized and dispersed control style. It passes some of the decision making and much of the action to objects surrounding a control center. Each neighboring object has a significant role to play. It can also be called as event driven model, where the control is delegated to the object requesting it to process the event.


 * Types[reference]
 * Broadcast model : An event is broadcast to all objects in the application. The object which can handle the event can acquire the control.
 * Interrupt-driven model : There will be the interrupt handler to process the interrupt and passes to some object to process it.


 * Advantages
 * It is easy to understand.
 * Though there is an external coordinator, Objects can be be made smarter to know what they are supposed to do and can be reused in other applications.
 * Delegating coordinators tend to know about fewer objects than dominating controllers.
 * Dialogs are higher-level.
 * It is easy to change as changes typically affect fewer objects.
 * It is easier to divide design work among team members.


 * Disadvantages
 * Too much distribution of responsibility can lead to weak objects and weak collaborations.

When one wants to delegate work to objects that are more specialized.
 * When to use

Preferred control style
After extensive results of experiments conducted, only the senior management has the necessary skills to make use of delegated control style and centralized control style benefits programmers. There is no context mentioned about the mid-level employees.