Design Pattern Discussion

I am now reading on a surogate pattern, I am not sure as to what is the difference between a Proxy pattern and a state pattern.
I currently reading the Thinking in Patterns by Bruce Eckel I really have probelm in understanding the Surrogate pattern design. I need concrete examples, is there any other sites or articles I can refer to or perhaps read.
Please give me some light and direction on this thank you

What's the Surrogate pattern? is it another name for
Proxy?Eckel uses the term "Surrogate" as a "category" containing Proxy and State.

Similar Messages

  • Design Pattern for Discussion Forum

    Hi all,
    We have to develop a application similar to our discussion forum. Which Design Pattern is more useful? Can u discuss the archietecture? We use J2EE except EJB.
    Thanks,
    Murali

    We expect people to at least make an attempt at the question and present a few ideas particularly college assignments / home-work questions. We dont expect everybody/thing to correct, you will receive little criticism for being wrong, if you show a willingness to put in some effort. You will be criticised for and likely receive no help if you simple expect members to do your work.
    Some patterns to be think about.
    The achitectural pattern of this forum is thin client, 3-tier, presentation, functionality and storage.
    Consider the following patterns.
    - Model View Controller
    - Facade and/or Proxy
    - Command
    - Composite
    - Memento

  • SERVICE LOCATOR ?? Is it really an interesting Design pattern??

    Hi everybody,
    i've a problem with the J2EE Design Pattern "Services locator" (it's a singleton).
    It is said that by making use of a Service Locator we can :
    - hide to the client the complexities of initial context creation, EJB home object lookup,and EJB objectre-creation.
    - multiple clients can reuse the Service Locator object to reduce code complexity, provide a single point of control, and improve performance by providing a caching facility.
    But i would like to understand at which side should that service locator object reside??!!??
    If it is at server side then the clients need well an initial context in order to make a lookup on that object.
    Conclusion :
    the service locator doesn't hide the complexities of initial context!!
    Furthermore the client has to perform a look-up on that service locator object!! The only advantage left is caching facility.
    If it is at client side, each client needs his own services locator object
    Conclusion :
    multiple client don't reuse the same service locator. What's the advantage to be a singleton ???
    There is certainly something that i don't understand so help me please!! Thanks.

    Hi Yves,
    But i would like to understand at which side should
    that service locator object reside??!!??
    If it is at client side, each client needs his own
    services locator object
    Conclusion :
    multiple client don't reuse the same service locator.
    What's the advantage to be a singleton ???The service locator resides on the client side and is implemented as
    a singleton. Since it is possible that there could be multiple
    class loaders/JVMs on the client side, and therefore, multiple
    instances of the "singleton" service locator. This is typical
    in a distributed environment (e.g. servlets/JSPs in a web-tier
    cluster using service locator). Thus service locator is not
    a truly "distributed singleton" object. But, the empahsis
    is to design the service locator such that it does not hold
    any state that needs to be replicated across multiple
    instances across different JVMs as mentioned. Thus, there
    is no need for multiple clients to use the "same" service locator,
    but still the benefits of implementing this pattern is realized.
    By making it a singleton, and keeping it from holding state
    that needs to be replicated, we realize the benefits of this pattern.
    You may also want to visit the J2EE Pattern interest list
    and see these relevant discussions :
    Topic: Service Locator and passivation
    http://archives.java.sun.com/cgi-bin/wa?A2=ind0106&L=j2eepatterns-interest&F=&S=&P=1026
    Topic: Caching EJBHome interfaces
    http://archives.java.sun.com/cgi-bin/wa?A2=ind0106&L=j2eepatterns-interest&F=&S=&P=9226
    Topic: Using Service Locator for Data Source caching
    http://archives.java.sun.com/cgi-bin/wa?A1=ind0106&L=j2eepatterns-interest#31
    hope this helps,
    thanks,
    -deepak

  • Design Patterns/Best Practices etc...

    fellow WLI gurus,
    I am looking for design patterns/best practices especially in EAI / WLI.
    Books ? Links ?
    With patterns/best practices I mean f.i.
    * When to use asynchronous/synchronous application view calls
    * where to do validation (if your connecting 2 EIS, both EIS, only in WLI,
    * what if an EIS is unavailable? How to handle this in your workflow?
    * performance issues
    Anyone want to share his/her thoughts on this ?
    Kris

              Hi.
              I recently bought WROX Press book Professional J2EE EAI, which discusses Enterprise
              Integration. Maybe not on a Design Pattern-level (if there is one), but it gave
              me a good overview and helped me make some desig decisions. I´m not sure if its
              technical enough for those used to such decisions, but it proved useful to me.
              http://www.wrox.com/ACON11.asp?WROXEMPTOKEN=87620ZUwNF3Eaw3YLdhXRpuVzK&ISBN=186100544X
              HTH
              Oskar
              

  • Choice of design pattern for data acquisition system

    Hello all
    I have a trouble about selecting the suitable design pattern / architecture for a data acquisition system. 
    Here is the details of the desired system:
    There is data acquisition hardware and I need to use it by observing parameters on User interface. 
    the data acquisiton period, channel list to scan should be chosen on User interface. Besides, there are many user interface interactions. e.g. if user selects a channel to add scanlist, then I need to enable and make visible some other parts on user interface. 
    When user completes the channel selection, then he will press the button to start data acquisition. Then I also need to show the scanned values on a graph in real time and log them in txt file.
    I know that I cannot use producer consumer pattern here. because the data acquisition loop should wait for parameters to scan channels. and it works in a given period by user. so the user interface loop performs higher rate then consumer loop (data acquisition loop). it means queue will be bigger bigger. if I use notifier it will loss some data come from user interface. 
    is there any idea about that ? is there any suitable design pattern for this case ? 
    Thanks in advance
    best regards 
    Veli BAYAR
    Embedded Systems Software and Hardware Engineer 
    "You live in a graphical world. Why not program in one?"
    Solved!
    Go to Solution.

    johnsold wrote:
    Veli,
    I recommend the Producer/Consumer model with some modifications.
    You might need three loops.  I cannot tell for sure from your brief description.
    The User Interface loop responds to the user inputs for configuration and start/stop of acquisition.  The parameters and commands are passed to the Data Acquisition loop via a queue. In this loop is a state machine which has Idle, Configuration, Acquisition, and Shutdown states (and perhaps others). The data is sent to the Processing loop via a different queue. The Processing loop performs any data processing, displays the data to the user, and saves it to file. A notifier can be used to send the Stop or shutdown command from the User Interface loop to the other loops.  If the amount of processing is minimal and the file write times are not too long, the Processing loop functions might be able to occur in the Timeout case of the UI loop Event structure.  This simplifies things somewhat but is not as flexible when changes need to be made.
    I am not sure that a Design Pattern for this exact setup exists but it is basically a combination of the Producer/Consumer (Events) and Producer/Consumer (Data) Design Patterns.
    Lynn
    Check out this thread: http://forums.ni.com/t5/LabVIEW/Multiple-poll-case-structures-to-event-help/td-p/2551309
    There are discussions there about a 3-loop architecture that may help you.
    Jeff
    Jeffrey Zola

  • Design Patterns, The Decorator

    When trying to implement the classic decorator design patterns your decorator executable might look like this:<br><br>
    <pre>
      METHOD validate.
        DATA: Validator TYPE REF TO validation_manager.
       CREATE OBJECT:
         Validator TYPE validation_manager.
        ,Validator TYPE validate_format                 EXPORTING x_validator = Validator
        ,Validator TYPE validate_values                 EXPORTING x_validator = Validator
        ,Validator TYPE validate_relation_input       EXPORTING x_validator = Validator
        ,Validator TYPE validate_relation_database EXPORTING x_validator = Validator.
        me->lst_result = validator->validate( me->lst_data ).
        WRITE: / 'Processing Validate Activity'.
      ENDMETHOD.                    "validate</pre><br><br>
    The validate method ends up in endless resurcion in the memory. The reason is that I'm using the same variable as the resulting instanse and as parameter. It seems like the constructor treats both the result and the parameter as the same field/instanse regardless import parameter such as VALUE/REFERENCE. If I change the method to use an extra field in the method validate like:
    <br><br><pre>
      METHOD validate.
        DATA:
          validator  TYPE REF TO validation_manager
         ,recursive  TYPE REF TO validation_manager.
        CREATE OBJECT validator TYPE validation_manager.
        recursive ?= validator.
        CREATE OBJECT validator TYPE validate_format
          EXPORTING x_validator = recursive.
        recursive ?= validator.
        CREATE OBJECT validator TYPE validate_values
         EXPORTING x_validator = recursive.
        recursive ?= validator.
        CREATE OBJECT validator TYPE validate_relation_input
          EXPORTING x_validator = recursive.
        recursive ?= validator.
        CREATE OBJECT validator TYPE validate_relation_database
          EXPORTING x_validator = recursive .
        recursive ?= validator.
        me->lst_result = validator->validate( me->lst_data ).
        WRITE: / 'Processing Validate Activity'.
      ENDMETHOD.                    "validate</pre><br><br>
    Now the decorator engine works, but why does the first implementation not work when the same one executes fine in php, c++, delphi, java and other languages.<br><br>
    If you do not know what I'm trying to discuss, look up "Design Patterns - Simply", and jump to the chapter about the decorator design pattern. I'm trying to use this design pattern for a validation manager within my Business Process Engine, which needs to be able to configure what types of validation needed for on specific process (BPMN).<br><br>

    Hi Matt, Thanks for the formatting..:) I will post the complete program as it's only a prototype program. Trying to get the format under control.
    </body>
    Report  ZDP_DECORATOR_XMP01
    REPORT  zdp_decorator_xmp01.
    parameters: bestimpl  TYPE boolean_01 default 0.
    TYPES:
      BEGIN OF processdata
       ,name   TYPE char30
       ,street TYPE char30
       ,zip    TYPE char5
       ,city   TYPE char30
       ,email  TYPE char50
       ,phone  TYPE char20
    ,END OF processdata
    ,BEGIN OF result
       ,msgid  TYPE msgid
       ,msgtyp TYPE msgty
       ,msgno  TYPE msgno
       ,status TYPE char1
    ,END OF result.
    CONSTANTS:
    true     TYPE boolean_01 VALUE 1
    ,false    TYPE boolean_01 VALUE 0.
    CLASS validationmanager DEFINITION
    CLASS validation_manager DEFINITION.
      PUBLIC SECTION.
        METHODS:
          validate
            IMPORTING
              x_data             TYPE processdata
            RETURNING
              value(y_result)    TYPE result.
    ENDCLASS.
    CLASS validationmanager IMPLEMENTATION
    CLASS validation_manager IMPLEMENTATION.
      METHOD validate.
        WRITE: / 'Common validation'.
      ENDMETHOD.                    "validate
    ENDCLASS.
    CLASS Validate_Decorator DEFINITION
    CLASS validate_decorator DEFINITION INHERITING FROM validation_manager ABSTRACT .
      PUBLIC SECTION.
        DATA: validator TYPE REF TO validation_manager.
    ENDCLASS. 
    CLASS validate_format DEFINITION
    CLASS validate_format DEFINITION INHERITING FROM validate_decorator.
      PUBLIC SECTION.
        METHODS:
          constructor
           IMPORTING value(x_validator) TYPE REF TO validation_manager
         ,validate REDEFINITION.
    ENDCLASS.   
    CLASS validate_format IMPLEMENTATION
    CLASS validate_format IMPLEMENTATION.
      METHOD constructor.
        CALL METHOD super->constructor( ).
        me->validator = x_validator.
      ENDMETHOD.                    "constructor
      METHOD validate.
        y_result = validator->validate( x_data ).
        IF y_result-status IS INITIAL.
          WRITE: / 'Now doing the format checks'.
        ENDIF.
      ENDMETHOD.                    "validate
    ENDCLASS.
    CLASS validate_values DEFINITION
    CLASS validate_values  DEFINITION INHERITING FROM validate_decorator.
      PUBLIC SECTION.
        METHODS:
          constructor
           IMPORTING value(x_validator) TYPE REF TO validation_manager
         ,validate REDEFINITION.
    ENDCLASS.
    CLASS validate_values IMPLEMENTATION
    CLASS validate_values IMPLEMENTATION.
      METHOD constructor.
        CALL METHOD super->constructor( ).
        me->validator = x_validator.
      ENDMETHOD.                    "constructor
      METHOD validate.
        y_result = validator->validate( x_data ).
        IF y_result-status IS INITIAL.
          WRITE: / 'Now doing the values checks'.
        ENDIF.
      ENDMETHOD.                    "validate
    ENDCLASS. 
    CLASS validate_relation_input DEFINITION
    CLASS validate_relation_input DEFINITION INHERITING FROM validate_decorator.
      PUBLIC SECTION.
        METHODS:
          constructor
           IMPORTING value(x_validator) TYPE REF TO validation_manager
         ,validate REDEFINITION.
    ENDCLASS.
    CLASS validate_relation_input IMPLEMENTATION
    CLASS validate_relation_input IMPLEMENTATION.
      METHOD constructor.
        CALL METHOD super->constructor( ).
        me->validator = x_validator.
      ENDMETHOD.                    "constructor
      METHOD validate.
        y_result = validator->validate( x_data ).
        IF y_result-status IS INITIAL.
          WRITE: / 'Now doing the relation input checks'.
        ENDIF.
      ENDMETHOD.                    "validate
    ENDCLASS.
    CLASS validate_relation_database DEFINITION
    CLASS validate_relation_database DEFINITION INHERITING FROM validate_decorator.
      PUBLIC SECTION.
        METHODS:
          constructor
           IMPORTING value(x_validator) TYPE REF TO validation_manager
         ,validate REDEFINITION.
    ENDCLASS.  
    CLASS validate_relation_database IMPLEMENTATION
    CLASS validate_relation_database IMPLEMENTATION.
      METHOD constructor.
        CALL METHOD super->constructor( ).
        me->validator = x_validator.
      ENDMETHOD.                    "constructor
      METHOD validate.
        y_result = validator->validate( x_data ).
        IF y_result-status IS INITIAL.
          WRITE: / 'Now doing the relation database checks'.
        ENDIF.
      ENDMETHOD.                    "validate
    ENDCLASS.  
    CLASS process_execution DEFINITION
    CLASS process_execution DEFINITION.
      PUBLIC SECTION.
        METHODS:
          startevent
         ,getdata
         ,validate
         ,process
         ,endevent.
      PRIVATE SECTION.
        DATA:
          lst_data   TYPE processdata
         ,lst_result TYPE result.
    ENDCLASS.                    "process_execution DEFINITION
    CLASS process_execution IMPLEMENTATION
    CLASS process_execution IMPLEMENTATION.
      METHOD startevent.
        WRITE: / 'Processing startevent'.
      ENDMETHOD.                    "startevent
      METHOD getdata.
        me->lst_data-name        = 'Hans Andersen'.
        me->lst_data-street      = 'H.C Andersens Boulevard 112'.
        me->lst_data-zip         = '1557'.
        me->lst_data-city        = 'København'.
        me->lst_data-email       = 'hcATandersen.dk'.
        me->lst_data-phone       = '0045-31162211'.
        WRITE: / 'Processing Get_Data Activity'.
      ENDMETHOD.                    "getdata
      METHOD validate.
        DATA:
          validator  TYPE REF TO validation_manager
         ,recursive  TYPE REF TO validation_manager
        IF bestimpl = true.
          CREATE OBJECT:
            validator TYPE validation_manager
           ,validator TYPE validate_format EXPORTING x_validator = recursive
           ,validator TYPE validate_values EXPORTING x_validator = recursive
           ,validator TYPE validate_relation_input EXPORTING x_validator = recursive
           ,validator TYPE validate_relation_database EXPORTING x_validator = recursive.
        ELSE.
          CREATE OBJECT validator TYPE validation_manager.
          recursive ?= validator.
          CREATE OBJECT validator TYPE validate_format
            EXPORTING x_validator = recursive.
          recursive ?= validator.
          CREATE OBJECT validator TYPE validate_values
           EXPORTING x_validator = recursive.
          recursive ?= validator.
          CREATE OBJECT validator TYPE validate_relation_input
            EXPORTING x_validator = recursive.
          recursive ?= validator.
          CREATE OBJECT validator TYPE validate_relation_database
            EXPORTING x_validator = recursive .
          recursive ?= validator.
        ENDIF.
      Recursive call of the validate and it's successors
        me->lst_result = validator->validate( me->lst_data ).
        WRITE: / 'Processing Validate Activity'.
      ENDMETHOD.                    "validate
      METHOD process.
        WRITE: / 'Processing Process Activity'.
      ENDMETHOD.                    "process
      METHOD endevent.
        WRITE: / 'Processing endevent'.
      ENDMETHOD.                    "endevent
    ENDCLASS.    
    CLASS mainapp DEFINITION                                             *
    CLASS mainapp DEFINITION.
      PUBLIC SECTION.
        CLASS-METHODS:
          main.
    ENDCLASS.   
    CLASS mainapp IMPLEMENTATION                                         *
    CLASS mainapp IMPLEMENTATION.
      METHOD main.
        DATA:
          p89 TYPE REF TO process_execution.
        CREATE OBJECT p89.
        p89->startevent( ).
        p89->getdata( ).
        p89->validate( ).
        p89->process( ).
        p89->endevent( ).
      ENDMETHOD.  
    ENDCLASS.     
    START-OF-SELECTION.
      mainapp=>main( ).
    Edited by: Matt on Dec 22, 2009 2:03 PM Fixed formatting

  • Design patterns in WLI

    What design patterns could provide the best reuse of business processes and messaging infrastructure?

              Hi.
              I recently bought WROX Press book Professional J2EE EAI, which discusses Enterprise
              Integration. Maybe not on a Design Pattern-level (if there is one), but it gave
              me a good overview and helped me make some desig decisions. I´m not sure if its
              technical enough for those used to such decisions, but it proved useful to me.
              http://www.wrox.com/ACON11.asp?WROXEMPTOKEN=87620ZUwNF3Eaw3YLdhXRpuVzK&ISBN=186100544X
              HTH
              Oskar
              

  • JDBC Design Patterns

    Hi All,
    I am new to patterns and have started understanding them using the Head First Series.
    I would like to know what all design patterns are there in JDBC?
    Can i say that JDBC uses a Facade design patterns as it hides the database specific details and provides us a interface which helps us to connect to a database. What other design patterns exist as part of the JDBC?
    Request you to clarify my doubts.
    Many thanks in advance

    I would really appreciate a good discussion on it
    rather than any spoon feeding.
    A typical JDBC code will appear as follows:
    try
    /* Load the jdbc-odbc driver
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    // Open a connection to data source
    con
    =DriverManager.getConnection("jdbc:odbc:DBName","","")
    // Get a statement from the connection
    Statement stmt = conn.createStatement() ;
    // Execute the query
    ResultSet rs = stmt.executeQuery( "select * from
    table_name" ) ;
    1. Is it ok to look into each statement of the above
    code snippet in terms of Design Patterns.it's ok, yes. not necessarily appropriate or worthwhile, though
    2. How can one dissect each line of the code in terms
    of various design patterns?you can't. design patterns exist at a higher level of abstraction than code. 'in terms of' is also disconcertingly vague.
    3. Is it correct to conclude that java.sql package
    overall uses Abstract Factory Pattern.
    As it uses lot of interfaces and implemetation is
    provided by the Vendors. yep. that sounds fair enough. not very useful, though
    4. Consider a particular package like
    java.sql.Statement,java.sql.Blob,java.sql.Connection
    etc. is is correct to conclude that
    its an example of a Factory Method Pattern as any
    client would instantiate. Here the client would be
    Statement object,
    Creator is Connection Interface and createStatement()
    is the factory method.possibly. there's little value in trying to define everything as a "design pattern", though. rather than thinking "oh, they must be using PATTERN X here", think "if I were writing this code, I think PATTERN X would be appropriate". or, more usefully, "is there a pattern that solves this problem?". there isn't, necessarily
    5. I am not able to understand if a statement like
    Class.forName() should be viewed only in terms of a
    programming instruction or
    any design patternit's a line of code, nothing more. stop trying to make everything into a pattern. until you realise where patterns are and aren't applicable, you'll never understand them
    6. Can "stmt.executeQuery()" can be viewed as A
    Strategy Pattern? nope. what makes you think that?
    I would really welcome a good discussion on the above
    questions.does the discussion have to involve design patterns? you know, of course, that design patterns aren't magic beans, right? I know you've just discovered patterns, and are all excited by them, but seriously, they're only ideas, not Infallible Solutions To All Software Problems &#8482;. the most common mistake people make using design patterns is to see them everywhere, and try to bend every problem to fit a particular pattern
    for the record, nobody really views JDBC in terms of patterns. there's little value in viewing existing technologies in those terms, since the most you can "gain" is to have guessed what some other developer did, before.

  • Recommend design pattern books

    Hi
    I work at a university and I am looking for some books on design patterns in LabVIEW, preferably for 2009.
    I am interested in state machine and master/slave design and perhaps also producer/consumer design pattern.
    Can you recommend some books on these techniques.
    Simon
    LabVIEW 8.6 / 2009 / 2010
    Vision Development Module 8.6 / 2009 / 2010
    VBAI 3.6 / 2010

    The LabVIEW Style Book by Peter Blume has a chapter devoted to discussing patterns in LV.  If you want to go generic and not pin yourself to one language, the classic of the subject is Design Patterns by Gamma, Helm, Johnson & Vlissides - that book has been on my shelf ever since I used it as a textbook over a decade ago.
    Greg
    Certifed LabVIEW Developer

  • [disc]Design pattern - immutable objects.

    I`m working more often with immutable object because it doesn`t cost as much work to keep object consistent. But sometimes an object has to be build or a reference to his child objects has to be set.
    eg
    class A{
        private ArrayList bList = new ArrayList();  
        public A(){}
        public void addB(B b){
            bList.add(b);
    class B{
        private A a;
        public B(A a){
             this.a = a;
    }It`s now more complicated to make a immutable version of A.
    My question is how this problem could be solved. One solution is to add an immutable flag that could be set to true if the last B is added. But this couldn`t be checked compile time.
    Maybe there is a design pattern for this problem.
    I would like to discuss about this problem, so every thought is welcome.

    I have an Immutable Collection wrapper class that I use when I want to have a Collection be read-only.
    If you look at the JavaDoc for AbstractCollection you'll see that the add and remove methods throw UnsuportedOperationException.
    So all you have to do is implement the iterator() and size() methods. i.e.
    public class ImmutableCollection extends AbstractCollection {     
         private Collection collection;
          * only constructor
         public ImmutableCollection(Collection collection) {
              this.collection = collection;
          * returns the size of the collection
         public int size() {
              return collection.size();
          * returns a non-modifiable iterator over the elements of the collection
         public Iterator iterator() {
              return new Iterator() {
                   Iterator iterator = collection.iterator();
                   public boolean hasNext() {
                        return iterator.hasNext();
                   public Object next() {
                        return iterator.next();
                   public void remove() {
                        throw new UnsupportedOperationException();
    }

  • Facade design pattern example?

    Can someone point me to a LabVIEW example of this OOP design? I am learning OOP in LabVIEW and my task is to create an example program using the facade design pattern. I can't find an example to study.
    Solved!
    Go to Solution.

    I'm interested, too, so I posted a link to your question on LAVA.  There are a lot of discussions of this sort over there.
    Jim
    You're entirely bonkers. But I'll tell you a secret. All the best people are. ~ Alice

  • Design Patterns Web Site

    Hi,
    I was curious what everyone's opinion (or at least those who frequent this forum) was about a website explaining Design Patterns using Java.
    I was thinking about making a site which discusses various design patterns, including real-world analogies (to try and make things simple and clear), and sample code.
    i thought it might be a good idea, b/c I myself am trying to learn about design patterns (including when to use them and when not to use them)....and there is a lot of info on the web, but I learn best by example....so thats wherei got the idea for a straight forward site.
    what are your thoughts? I kind of like the style of O'Reilly's "Head First Design Patterns" as an approach. Let me know what u think..
    peace.
    craig

    wow, thats what i had in mind...and since a lot of the samples are C#...its easy to relate to java.
    thanks

  • The drawback of design patterns

    It is more and more important to get the skill of using design patterns as a programmer , and there is many material about it , all of them talking about the benefits of using patterns, But I know that Patterns is not so better as they argued , Patterns also have deficiency , Patterns can not be used every where .....
    What I want here is that I hope to hear heatly discussing about the "the drawback of design patterns" , please using your head , typing what u know here !

    Patterns can not solve the problems such as "code
    scattening" and "code tangling"Okay, so there are some problems that patterns can't solve. Apparently by your logic, the fact that concrete doesn't cure cancer is a deficiency of concrete. I suppose that's logically defensible, but it also contains precisely zero information, so it's a pointless statement.
    , these the
    headaches are in the domain of OO , Design Patterns
    are only smart design idiom within OO , but they can
    not solve the drawback of OO , and Patterns should
    not be used everywhere Okay. So, again, concrete is in the domain of construction, but it cannot solve the drawbacks of construction, so that's a deficiency of concrete. Again, zero information, thus pointless.
    , the places where they should
    be used is the place where u face "May be change in
    the future " ! Patterns are not so much about future change as they are about providing a common vocabulary--a means of communication--and a stock of parts to draw from when solving certain problems.
    Use Patterns add many classes into your code ,Maybe, maybe not.
    Good design adds classes. Poor design stuffs everything into a few bloated classs. Many classes is not necessarily a bad thing, and if you've employed good design, you'll likely have the same design as specified in a pattern. So using patterns doesn't in and of itself add classes. The pattern-ness comes into play in applying the name to the good design you did anyway.

  • Design pattern for quiz module

    Hello fellow developers.
    I am making/refactoring a module in a jee mobileplatform. It's a quiz module where the enduser participates via sms. Now, I am trying to redesign the module and I am thinking about using the state pattern for this, where the user can be in i.e the following states: StartQuizState(welcomemessage and first question), NextQuestionState, NoAnswerState(the user sent an empty or no valid response), QuizFinishedState(sum up the points etc), and maybe a BonusState if the user makes x points within a specific time limit.
    I was wondering if anyone had any comments on my choice of pattern for this module :)
    Thanks in advance for any comments,
    Best regards,
    Eivind

    Good morning Saish, sorry for my late response.
    First of all - thanks again for showing such interest in my "discussion", and my deepest apologies for my grammatical error hehe, I was tired and wrote a little bit too fast. Normally I take great pride in writing correctly :)
    I would also like to say that many, many times before, these forums, and others, have helped me when stuck in a programming problem or other problems related to software. So without all those people out there willing to spend their free time answering questions from people like me, a lot of us wouldn't be able to solve whatever problem we might have, and basically the general experience amongst inexperienced programmers would evolve much slower. So Saish, thanks to people like you there are a lot of happy programmers out there. It is very important for those of us working with development, to share whatever knowledge we might have.
    Anyway back to the discussion:)
    I totally agree, the state is absolutely the Quiz, not the contestant of the quiz. I just read a Head first design patterns (a great book by the way!), and I was a bit to hung up on using patterns instead of looking for a solution that works. So what I have done so far, refactoring my solution:
    I have the following models:
    - Quiz
    - Contestant
    - Answer
    - QuizManager
    Quiz Object
    The Quiz model that represents the actual quiz, which contains a list of Question objects, and Answer objects. The quiz has a int constant QUIZ_STATE, and the possible states:
    private static final int START_QUIZ_STATE = 0;
    private static final int FINISH_QUIZ_STATE = 1;
    private static final int NEXT_QUESTION_STATE = 2;
    private static final int REPEAT_QUESTION_STATE = 3;
    private int quizState = START_QUIZ_STATE;
    As you can see the quizState defaults to START_QUIZ_STATE. The first thing I do when the contestant enters, is to check the state of the quiz, if he already is an contestant, if the quiz is finished etc.
    Then I continue and process the quiz based on the state of the quiz (this time everything in one class - a quizmanager).
    Contestant Object
    Contestant model containing what questions are already answered, number of points and so on.
    Answer Object
    The Answer object is created if the contestant sends an answer and his answer corresponds with the alternatives in the Answer object. E.g if the answer alternatives are a) 100 kilometers and b) 20 kilometers, and the contestant sends an answer c, it is considered as no answer, and the last question is repeated, if the contestant sends a, or b, his answered is compared with the current Answer alternative, and a new question is sent him.
    I have some database tables for managing this module, and basically a Quiz is configured as an XML, where 1 xml is a quiz, and 1 quiz xml can contain many question and answer tags. These are read upon quiz start, and Quiz, Answer, and Question objects are created. Every time a new contestant enters, a new Contestant object is ofcoursed created.
    All the logic takes place in the previously mentioned QuizManager. Any comments on the solution so far would be greatly appreciated.
    If interesting to anyone I can post the classes when I am finished with the module, as a standalone java application without a database.
    Regards,
    Eivind

  • How can I develop a web application using EJB design pattern?

    I have searched over the web and found quite a lot of tutorials on how to use the EJB design pattern.
    I know that there will be a home interface, EJB object interface and a SessionBean.
    But the tutorials often only cover a single class, this made me unable to get a complete picture of how EJB design pattern can be implemented into a whole system.
    I am now required to devleop an online shopping web application using EJB and JSP page.
    I think I will need to create a lot of classes: Member, ShoppingCart, Product...etc.
    What I want to ask is that, do I need to create a home interface, EJB object interface and a SessionBean for each of these classes?
    I really need some ideas on how to develop this system using EJB + JSP pages.
    Many thanks to you all.

    For every EJB that you want to create, you will need to code a home and remote interface and a bean class.
    You could start getting your ideas here
    http://www.theserverside.com/books/wiley/masteringEJB/
    http://www.coreservlets.com

Maybe you are looking for

  • Downloading and editing an existing WordPress site in Dreamweaver CS5.

    Hello! New to the forums, here. I'll try to be brief. I've got a WordPress site in-place at metalmeter.com that is hosted through HostGator. Basically, what I'm looking to do is get the site from the remote server and edit it in Dreamweaver CS5, prev

  • DeActivate - Dunning Levels - Setup Window

    In running the Dunning Wizard process we have designed the Dunning Letter forms thru PLD.  Our customer has activated the Dunning Levels - Setup Window thru the Main Menu Form Settings.  The Dunning Wizard now does not print the forms as designated i

  • Warning Using in Water 4 Day Old Z3 Tablet Leaked

    Just wanted to give a warning to all Z3 tablet owners, my experiance may just be an unlucky one off or could be a flaw in the design of the device. Had my Z3 tablet for 4 days and tonight I used it to browse in the bath. Something I have done 100's o

  • Mattes For Final Cut Pro

    Hey I would like to know if there are some sort of motion mattes that I could have at a low opacity on during the video. Such things as leaves and vines. Anything like that. And it would be moving around on the sides of the video. Id like to know if

  • I have published iWeb now what?

    I have finished my web pages in iWeb and published them but now what? Do I have to buy a domain name? I am starting a business and do not know if I need to purchase a domain name or if I can just use my mobile me website? If I don't have to purchase