I am looking for a design pattern / solution for the following problem, that is related to the Observer pattern, I have already studied.
In my code I have a MyModel
class. It has many properties.
public class MyModel {
private List<Flower> flowers = new ArrayList<Flower>();
private List<Toys> toys = new ArrayList<Toys>();
private List<Coffee> coffees = new ArrayList<Coffee>();
private List<IBusinessEntityListener> listener =
new ArrayList<IBusinessEntityListener>();
public void addChangeListener(IBusinessEntityListener newListener) {
listener.add(newListener);
}
}
So classes that implement IBusinessEntityListener
can register to MyModel
class.
Then I have 10+ listeners that are interested only in some properties of MyModel
. They all implement IBusinessEntityListener
. But how can I specify (for example with Java Generics?) that some listener are only interested in Flowers
, some only about Toys
, etc.?
So How to design such class structure that would support listening to certain properties?
All listeners would anyway implement 3 methods for the operations add, update and delete.
for any type of Listeners have a class :
and a listener list:
and any changes to each property reflect to related listeners.
UPDATE
another solution is that u have a list of interest in Listener Object:
an in model :