Мне показалось полезным инверсию управления, поскольку она устраняет жесткую связь между двумя объектами. Но не уверен, как мы можем достичь полиморфизма одновременно. Например, я прошел статью Io C и Inpendency Injection . В этом примере кода приведено приложение, в котором перечислены фильмы. Ниже приведен фрагмент кода приложения перечисления mov ie, использующего шаблон внедрения зависимостей через java bean: -
**class MovieLister{
private MovieFinder finder;
public void setFinder(MovieFinder finder) {
this.finder = finder;
}
public Movie[] moviesDirectedBy(String arg) {
List allMovies = finder.findAll();
for (Iterator it = allMovies.iterator(); it.hasNext();) {
Movie movie = (Movie) it.next();
if (!movie.getDirector().equals(arg)) it.remove();
}
return (Movie[]) allMovies.toArray(new Movie[allMovies.size()]);
}
}
public interface MovieFinder {
List findAll();
}
class TextFileMovieFinder implements MovieFinder{
//Pass text file containing movie detail in appropriate format
public void setFilename(String filename) {
this.filename = filename;
}
public List findAll(){
//implementaion
}
}
class XMLFileMovieFinder implements MovieFinder{
//Pass xml file containing movie detail in appropriate format
public void setFilename(String filename) {
this.filename = filename;
}
public List findAll(){
//implementaion
}
}
<beans>
<bean id="MovieLister" class="spring.MovieLister">
<property name="finder">
<ref local="MovieFinder"/>
</property>
</bean>
<bean id="MovieFinder" class="spring.TextFileMovieFinder">
<property name="filename">
<value>movies1.txt</value>
</property>
</bean>
</beans>**
Хорошая особенность этого подхода в том, что он не связан с реализацией MovieFinder и мы можем настроить любой MovieFinder в файле Bean и запустить приложение. Но здесь я сталкиваюсь с ограничением: это приложение может использоваться только для одного формата файла (текстового файла или XML файла) одновременно. Можем ли мы также достичь полиморфизма во время выполнения, чтобы пользователь мог свободно передавать фильмы в любом типе файла (текст / xml).
С уважением, Nite sh