All Questions
Tagged with java object-oriented-design
250 questions
59
votes
5
answers
32k
views
Using public final rather than private getters
I see most immutable POJOs written like this:
public class MyObject {
private final String foo;
private final int bar;
public MyObject(String foo, int bar) {
this.foo = foo;
...
42
votes
9
answers
4k
views
Programming for future use of interfaces
I have a colleague sitting next to me who designed an interface like this:
public interface IEventGetter {
public List<FooType> getFooList(String fooName, Date start, Date end)
...
39
votes
6
answers
31k
views
Why avoid Java Inheritance "Extends"
Jame Gosling said
“You should avoid implementation inheritance whenever possible.”
and instead, use interface inheritance.
But why? How can we avoid inheriting the structure of an object using the ...
31
votes
9
answers
31k
views
Are init() methods a code smell?
Is there any purpose for declaring an init() method for a type?
I'm not asking whether we should prefer init() over a constructor or how to avoid declaring init().
I'm asking if there is any ...
28
votes
7
answers
35k
views
Should I create interfaces for data transfer objects?
Is it a good idea or a bad idea to create an interface for data transfer objects? Presuming that the object is usually mutable.
Though my example is in Java, it should be applicable to any other ...
20
votes
4
answers
4k
views
How to create better OO code in a relational database driven application where the database is poorly designed
I am writing a Java web application that consists mainly of a bunch of similar pages in which every page has several tables and a filter that applies to those tables. The data on these tables comes ...
19
votes
6
answers
8k
views
Is utilizing a singleton for a cache an antipattern?
I'm currently writing an MVC application and I need a class that can:
A: get, add and remove data(specifically a TreeSet of sorted strings that I want stored in memory, but I doubt the data itself is ...
18
votes
8
answers
4k
views
Refactoring a long method which is based on large number of switch cases [duplicate]
We are using Java as a backend development language.
One year back, we wrote a method which uses switch cases based on Enums values. Since we are continuously adding enum members and according adding ...
18
votes
4
answers
16k
views
Java - Is it a bad idea to have fully static classes?
I'm working on a larger solo project and right now, and I have several classes in which I do not see any reason to create an instance of.
My dice class right now, for example, stores all of its data ...
17
votes
3
answers
5k
views
Does the state Pattern violate Liskov Substitution Principle?
This image is taken from Applying Domain-Driven Design and Patterns: With Examples in C# and .NET
This is the class diagram for the State Pattern where a SalesOrder can have different states during ...
16
votes
5
answers
799
views
How to make a datatype for something that represents either itself or two other things
Background
Here's the actual problem I'm working on: I want a way to represent cards in the card game Magic: The Gathering. Most cards in the game are normal-looking cards, but some of them are ...
14
votes
5
answers
5k
views
How to "Tell, don't ask" when 2 objects involves in the condition and the decision at the same time?
According to Explanation on how "Tell, Don't Ask" is considered good OO, I know the following is bad:
if(a.isX){
a.doY();
}
public class A{
public boolean isX;
public void ...
13
votes
4
answers
5k
views
Good implementation strategies for encapsulating shared data in a software pipeline
I'm working on re-factoring certain aspects of an existing web service. The way the service APIs are implemented is by having a kind of "processing pipeline", where there are tasks that are performed ...
11
votes
2
answers
11k
views
Is an interface with only getters a code smell?
(I've seen this question, but the first answer goes about auto properties more than about design, and the second one says hide the data storage code from the consumer, which I'm not sure is what I ...
10
votes
4
answers
7k
views
Should Objects with lots of fields be broken up? [duplicate]
When I have an Object that has lots of fields is it better to have them all as fields or try to find logical groupings as their own Objects and make those the fields?
I guess it comes down to which ...