org.argouml.pattern.cognitive.critics
Class CrConsiderSingleton

java.lang.Object
  |
  +--org.argouml.cognitive.critics.Critic
        |
        +--org.argouml.uml.cognitive.critics.CrUML
              |
              +--org.argouml.pattern.cognitive.critics.CrConsiderSingleton
All Implemented Interfaces:
Poster, java.io.Serializable

public class CrConsiderSingleton
extends CrUML

A critic to detect when a class can never have more than one instance (of itself of any subclasses), and thus whether it is suitable for declaration as a Singleton (with stereotype «Singleton».

See Also:
ArgoUML User Manual: Singleton Violated, Serialized Form

Fields inherited from class org.argouml.uml.cognitive.critics.CrUML
cat, decBEHAVIOR, decCLASS_SELECTION, decCODE_GEN, decCONTAINMENT, decEXPECTED_USAGE, decINHERITANCE, decINSTANCIATION, decMETHODS, decMODULARITY, decNAMING, decPATTERNS, decPLANNED_EXTENSIONS, decRELATIONSHIPS, decSTATE_MACHINES, decSTEREOTYPES, decSTORAGE
 
Fields inherited from class org.argouml.cognitive.critics.Critic
_clarifier, _knowledgeTypes, _numCriticsFired, _supportedDecisions, _supportedGoals, _triggerMask, DEFAULT_CLARIFIER, ENABLED, KT_COMPLETENESS, KT_CONSISTENCY, KT_CORRECTNESS, KT_DESIGNERS, KT_EXPERIENCIAL, KT_OPTIMIZATION, KT_ORGANIZATIONAL, KT_PRESENTATION, KT_SEMANTICS, KT_SYNTAX, KT_TOOL, NO_PROBLEM, PROBLEM_FOUND, RESOURCE_BUNDLE, SNOOZE_ORDER
 
Constructor Summary
CrConsiderSingleton()
          Constructor for the critic. Sets up the resource name, which will allow headline and description to be found for the current locale.
 
Method Summary
 boolean predicate2(java.lang.Object dm, Designer dsgr)
          The trigger for the critic. First check we are already a Singleton. Otherwise plausible candidates for the Singleton design pattern are classes with no instance variables (i.e. non-static attributes) and no outgoing associations.
 
Methods inherited from class org.argouml.uml.cognitive.critics.CrUML
expand, predicate, setHeadline, setResource
 
Methods inherited from class org.argouml.cognitive.critics.Critic
addControlRec, addKnowledgeType, addSupportedDecision, addSupportedGoal, addTrigger, beActive, beInactive, canFixIt, containsKnowledgeType, critique, defaultMoreInfoURL, fixIt, getArg, getArgs, getClarifier, getControlRec, getCriticCategory, getCriticKey, getCriticName, getCriticType, getDecisionCategory, getDescription, getDescriptionTemplate, getExpertEmail, getHeadline, getHeadline, getHeadline, getMoreInfoURL, getMoreInfoURL, getPriority, getPriority, getSupportedDecisions, getSupportedGoals, getTriggerMask, getWizardClass, initWizard, isActive, isEnabled, isRelevantToDecisions, isRelevantToGoals, makeWizard, matchReason, postItem, reasonCodeFor, setArg, setArgs, setDecisionCategory, setDescription, setEnabled, setExpertEmail, setKnowledgeTypes, setKnowledgeTypes, setKnowledgeTypes, setKnowledgeTypes, setMoreInfoURL, setPriority, snooze, snoozeOrder, stillValid, supports, supports, toDoItem, toString, unsnooze
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

CrConsiderSingleton

public CrConsiderSingleton()

Constructor for the critic.

Sets up the resource name, which will allow headline and description to be found for the current locale. Provides a design issue category (PATTERNS), sets a priority for any to-do items (LOW) and adds triggers for metaclasses "stereotype", "structuralFeature" and "associationEnd".

Method Detail

predicate2

public boolean predicate2(java.lang.Object dm,
                          Designer dsgr)

The trigger for the critic.

First check we are already a Singleton.

Otherwise plausible candidates for the Singleton design pattern are classes with no instance variables (i.e. non-static attributes) and no outgoing associations.

Overrides:
predicate2 in class CrUML
Parameters:
dm - the Object to be checked against the critic.
dsgr - the Designer creating the model. Not used, this is for future development of ArgoUML.
Returns:
PROBLEM_FOUND if the critic is triggered, otherwise NO_PROBLEM.


ArgoUML (c) 1996-2002
ArgoUML Project Home
ArgoUML Cookbook