• Sábado 20 de Abril de 2024, 14:40

Autor Tema:  Patron Adapter  (Leído 1608 veces)

rtbell

  • Miembro activo
  • **
  • Mensajes: 61
    • Ver Perfil
Patron Adapter
« en: Jueves 9 de Agosto de 2007, 05:52 »
0
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). :devil:


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. :D

espero se entienda. :hola:
RTbell<a href=\'mailto:linuxknow@gmail.com\'>linuxknow@gmail.com</a><!--c1--></div><table border=\'0\' align=\'center\' width=\'95%\' cellpadding=\'3\' cellspacing=\'1\'><tr><td>CODE </td></tr><tr><td id=\'CODE\'><!--ec1-->tournament<!--c2--></td></tr></table><div class=\'signature\'><!--ec2-->