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 159395
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 11, 20262026-05-11T10:51:05+00:00 2026-05-11T10:51:05+00:00

One of the ways to implement Dependency Injection correctly is to separate object creation

  • 0

One of the ways to implement Dependency Injection correctly is to separate object creation from business logic. Typically, this involves using a Factory for object creation.

Up until this point, I’ve never seriously considered using a Factory so I apologize if this question seems a little simplistic:

In all the examples of the Factory Pattern that I’ve run across, I always see very simple examples that have no parameterization. For example, here’s a Factory stolen from Misko Hevery’s excellent How To Think About the "new" Operator article.

 class ApplicationBuilder {   House build() {     return new House(new Kitchen(                new Sink(),                new Dishwasher(),                new Refrigerator())            );   } } 

However, what happens if I want each house that I build to have a name? Am I still using the Factory pattern if I re-write this code as follows?

 class ApplicationBuilder {   House build( const std::string & house_name) {     return new House( house_name,                       new Kitchen(new Sink(),                                   new Dishwasher(),                                   new Refrigerator())                     );   } } 

Note that my Factory method call has changed from this:

 ApplicationBuilder builder; House * my_house = builder.build();

To this:

 ApplicationBuilder builder; House * my_house = builder.build('Michaels-Treehouse');

By the way: I think the concept of separating object instantiation from business logic is great, I’m just trying to figure out how I can apply it to my own situation. What confuses me is that all the examples I’ve seen of the Factory pattern never pass any parameters into the build() function.

To be clear: I don’t know the name of the house until the moment before I need to instantiate it.

  • 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. 2026-05-11T10:51:06+00:00Added an answer on May 11, 2026 at 10:51 am

    I’ve seen quite a lot of examples that use a fixed set of arguments, like in your name example, and have used them myself too and i can’t see anything wrong with it.

    However there is a good reason that many tutorials or small articles avoid showing factories that forward parameters to the constructed objects: It is practically impossible to forward arbitrary number of arguments (even for a sane limit like 6 arguments). Each parameter you forward has to be accepted as const T& and T& if you want to do it generic.

    For more complicated examples, however, you need an exponentially growing set of overloads (for each parameter, a const and a nonconst version) and perfect forwarding is not possible at all (so that temporaries are forwarded as temporaries, for example). For the next C++ Standard that issue is solved:

    class ApplicationBuilder {   template<typename... T>   House *build( T&&... t ) {     return new House( std::forward<T>(t)...,                       new Kitchen(new Sink(),                                   new Dishwasher(),                                   new Refrigerator())                     );   } }; 

    That way, you can call

    builder.build('Hello', 13); 

    And it will return

    new House('Hello', 13, new Kitchen(new Sink(... 

    Read the article i linked above.

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

Sidebar

Ask A Question

Stats

  • Questions 121k
  • Answers 121k
  • Best Answers 0
  • User 1
  • Popular
  • Answers
  • Editorial Team

    How to approach applying for a job at a company ...

    • 7 Answers
  • Editorial Team

    How to handle personal stress caused by utterly incompetent and ...

    • 5 Answers
  • Editorial Team

    What is a programmer’s life like?

    • 5 Answers
  • Editorial Team
    Editorial Team added an answer Alas, Django does not support any easy solution to this.… May 12, 2026 at 12:21 am
  • Editorial Team
    Editorial Team added an answer function f() { g.apply(this,arguments); } see https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Function/apply for more details… May 12, 2026 at 12:21 am
  • Editorial Team
    Editorial Team added an answer You don't have to do anything to enable JavaScript; it's… May 12, 2026 at 12:21 am

Related Questions

I am trying to become a good programming citizen through learning more about Dependency
first time poster and TDD adopter. :-) I'll be a bit verbose so please
For fun, I'm trying to write one of my son's favorite board games as
I've run into quite an awkward predicament in a project at work. We need

Trending Tags

analytics british company computer developers django employee employer english facebook french google interview javascript language life php programmer programs salary

Top Members

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.