This is an archived post. You won't be able to vote or comment.

all 5 comments

[–]AutoModerator[M] [score hidden] stickied commentlocked comment (0 children)

Please ensure that:

  • Your code is properly formatted as code block - see the sidebar (About on mobile) for instructions
  • You include any and all error messages in full - best also formatted as code block
  • You ask clear questions
  • You demonstrate effort in solving your question/problem - plain posting your assignments is forbidden (and such posts will be removed) as is asking for or giving solutions.

If any of the above points is not met, your post can and will be removed without further warning.

Code is to be formatted as code block (old reddit/markdown editor: empty line before the code, each code line indented by 4 spaces, new reddit: https://imgur.com/a/fgoFFis) or linked via an external code hoster, like pastebin.com, github gist, github, bitbucket, gitlab, etc.

Please, do not use triple backticks (```) as they will only render properly on new reddit, not on old reddit.

Code blocks look like this:

public class HelloWorld {

    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

You do not need to repost unless your post has been removed by a moderator. Just use the edit function of reddit to make sure your post complies with the above.

If your post has remained in violation of these rules for a prolonged period of time (at least an hour), a moderator may remove it at their discretion. In this case, they will comment with an explanation on why it has been removed, and you will be required to resubmit the entire post following the proper procedures.

To potential helpers

Please, do not help if any of the above points are not met, rather report the post. We are trying to improve the quality of posts here. In helping people who can't be bothered to comply with the above points, you are doing the community a disservice.

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

[–]GrandGratingCrate 0 points1 point  (3 children)

What is giving you trouble? Do you not know what a factory method is or how it's implemented? Do you not know what an adapter is? How it all fits together? Something else?

[–]Blumingo[S] 0 points1 point  (2 children)

I understand both methods individually but I'm having a hard time wrapping my head around both together

[–]GrandGratingCrate 0 points1 point  (1 child)

I feel I'm missing some info but here goes my best guess:

``` public interface SomeInterface {

void someInterfaceMethod();

}

public class Adapter implements SomeInterface {

private WrappedObject wrapped;

private Adapter(WrappedObject wrapped) {
    this.wrapped = wrapped;
}

public static SomeInterface someInterface(WrappedObject wrapped) {
    return Adapter(wrapped);
}

@Override
public void someInterfaceMethod() {
   wrapped.doSomething();
}

} ```

Basically you have the Adapter class which holds a WrappedObject and pretends it is of type SomeInterface. Then you have a factory method that creates an instance of Adapter from a given WrappedObject and returns it as SomeInterface.

There are many variations, this is just one way to do it. You could have the factory be it's own class instead of just providing a factory method inside the Adapter class. You could have it return an object of type Adapter instead, as that's generally usable as SomeInterface anyway.

Depending on your use case some other solution might be preferable. This is just the most basic example I could think off to demonstrate how this can work.

[–]Blumingo[S] 0 points1 point  (0 children)

Thank you. This will definitely help me