tengo una duda con el patron adapter, haber si alguien puede orientarme.
miren tengo dos clases,
Directory y FTPRemoteDir
Directory entiende
contends q retorna una coleccion de Directory.
copy(f:file), copia un archivo.
FtpRemoteDir
ls retorma una coleccion de FtpRemoteDir.
transfer(f:file) tranfiere un archivo.
se tiene q adaptar una solución para poder usar un fileManager de manera que ambos entiendan los mismos mensajes.
mi solucion es hacer un adapter que herede de directory q conosca una instancia de ftpRemoteDir, de manera q adapter le haga las consultas al objeto adaptado.
el fileManajer entiende explorar(directorio).
Tdirectory
private
datos:collections;{una coleccion de directorios locales}
public
contenst:collections;
copy;
tftpRemoteDir
private
datos:collections;{una coleccion de ftpRemotedir}
public
ls:coleccions;
transfer;
adapter
private
adaptee:TftpRemoteDir;
public
contens:collection;{una coleccion de adapters}
copy;
adapter>>contends
|temp adaptador col|
col:=OrderedCollection new.
temp:=self adaptee ls;
temp do:[:r |adaptador:=adapter new.
adaptador setAdaptee:r.
col add:adaptador.]
^col.{retorna una colleccion de adaptadores para seguir navegando}
adapter>>copy:file
self adaptee transfer:file.
|explorer adapter directory|
explorer:=filemanager new.
adapter:=Adapter new:dir.
directory:=TDirectory new:dir.
explorer explorar(adapter).
explorer explorar(directory).
bueno opiniones, solo pretendan q no existe una manera de cambiar las clases Tdirectory y ftpRemoteDir. y q el fileManager debe entender los mensajes de uno de los dos.
espero se entienda.