Proxy a Adapter

0

Czym właściwie się rózni proxy od adaptera? Jeżeli np. mam klase która przechowuje prywatną liste pewnych obiektów i dodaje dodatkowe metody np. wyszukiwanie podlisty to jest adapter czy proxy?

0

W wielkim skrocie:
Adapter -> Jesli masz klase z jakims tam interfejsem i chcesz go w pewien sposob zmodyfikowac, lub zamapowac na inny interfejs.
Proxy -> Sluzy w gruncie rzeczy do dziwniejszych rzeczy. Przykladowo masz program, ktory musi w pewnych warunkach wykonac jakas akcja. Akcja ta jest kosztowna i Proxy sie uzywa do tego, aby opoznic wykonywanie tej akcji do czasu, gdy bedzie ona potrzebna, bo np. moze nie byc potrzebna w ogole (takie Lazy obiektowe). Innym przykladem moze byc na przyklad sytuacja, gdy chcesz ukryc to, ze klasa odwoluje sie do jakiegos zewnetrznego serwisu.

0

Czyli w takim razie obiekt trzymający liste(obiektów konkretnego typu) i wykonujący dodatkowe operacje (czyli rozszerzający interface) jest adaptorem?

0

Tak. W teorii mozna troche nagiac i podpiac to pod adapter. W praktyce takie cos jest nazywane dekoratorem.
W sumie to napisze to w inny sposob, zeby nie bylo niejasnosci:
Adapter jedyne co robi to adaptuje obiekt do jakiegos innego interfejsu, najczesciej to wyglada tak.

case object Foo

class SomeClass {
    def getFooObject = Foo  
}

trait FooProvider {
    def getFoo: Foo
}

class Adapter(s: SomeClass) extends FooProvider {
    override def getFoo: Foo =
        s.getFooObject
}

To co ty robisz to pewnie dekorator, tj.

class Foo

class FooDecorator(f: Foo) {
  def newMethod() // ...
}
0

Zdefiniuj "rozszerzający interfejs" chodzi o dodanie nowych metod do interfejsu (rozszerzenie) czy też zmiana zachowania (dekorator).

0

adapter jak adapter służy do przystosowania czegoś do użycia w innym standardzie
tak jak masz adapter pozwalający na podłączenie urządzenia z angielską wtyczką do polskiego gniazdka tak samo adapterem w programowaniu nazywa się klasę przystosowującą pewną klasę do wykorzystania w klasie wymagającej innego interfejsu

to co opisujesz zapewne adapterem nie jest, choćby dlatego że piszesz o "liście elementów"

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0