Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 3599370
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 18, 20262026-05-18T20:21:33+00:00 2026-05-18T20:21:33+00:00

I encountered similar problem if statement vs OO Design – 1 but it is

  • 0

I encountered similar problem “if” statement vs OO Design – 1 but it is slightly different. Here is the problem that open the popup (different objects/popups) onValueChange of listbox

Popup1 p1; // different objects
Popup2 p2; // different objects
Popup3 p3;
...

listbox.add("p1");
listbox.add("p2");
listbox.add("p3");
...

listbox.addChangeHandler() {
    if(getSelectedItem().equals("p1")){
       p1 = new Popup1();
       p1.show();
    } else if() {...}
      ....
}

I don’t want to write “if” that if p1 then p1 = new Popup1(); p1.center();

How I can handle this situation? Any design-pattern?

Here is my solution but it is so costly

map() {

    map.put("p1", new Popup1());
    map.put("p2", new Popup2());
    map.put("p3", new Popup3()); 
}

onValueChange() {
    map.get(selectedItem).show();
}

One drawback is initialization all the popups. but it is require only when valueChange

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-18T20:21:34+00:00Added an answer on May 18, 2026 at 8:21 pm

    I agree with leveraging the common base class when you can, but you can’t always add a method to the base class for every usage that might call for selecting between different subclasses.

    Your “map” solution is a decent approach for cases where the selection logic is specific to a piece of code, like matching user action to an object (e.g. popup), and you can’t find a way to leverage the common base class.

    One drawback is initialization all the popups. but it is require only when valueChange

    You should defer the instantiation until you need it:

    interface Showable {
        void show();
    }
    map() {
    
        map.put("p1", new Showable() { void show() { new Popup1().show(); } } );
        map.put("p2", new Showable() { void show() { new Popup2().show(); } } );
        map.put("p3", new Showable() { void show() { new Popup3().show(); } } ); 
    }
    
    onValueChange() {
        map.get(selectedItem).show();
    }
    

    The anonymous classes are stateless, so if you wanted to be extra efficient, you could create the anonymous instances once and reuse them.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I haven't written any code yet, but I've encountered a similar problem before. Hopefully
I encountered a problem when running some old code that was handed down to
We encountered a problem with using Subversion on Windows. A developer committed a file
I encountered a strange problem today. Whenever i put a breakpoint in one of
I encountered the following ddl in a pl/sql script this morning: create index genuser.idx$$_0bdd0011
I encountered the above error message after applying the OutputCache attribute on ActionResult methods
I encountered this term Hindley-Milner , and I'm not sure if grasp what it
I encountered a, at least to my expectations, strange behavior in the binary serialization
I encountered some code reading typedef enum eEnum { c1, c2 } tagEnum; typedef
So far I have encountered adjacency list, nested sets and nested intervals as models

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.