ООП для чайников. Паттерны проектирования. Мост (bridge)

Следующий патерн, также относится к типу структурных, и называется — мост.
Смысл этого паттерна в том чтобы отделить абстракцию от реализации. В каком-то смысле он очень похож на адаптер, с той разницей что адаптер, «адаптирует» интерфейсы классов друг к другу, а мост, разделяет их, для того что бы сделать возможным изменение интерфейсов независимо от реализации.

Вот как выглядит он выглядит на диаграмме:

bridge

Этот патерн следует применять, например, когда нужно отвязать интерфейс от реализации во время выполнения. Мост повышает расширяемость, позволяя независимо расширять абстракции и реализации.

Пример реализации паттарна Мост на Python:

class SortAbstraction:    
    
    def sortImpl(self, sortImpl):
        self._sortImpl = sortImpl
        
    def sort(self, data):
        self._sortImpl.sort(data)
        return data 

class SortImpl:
        
    def sort(self, data):
        pass
    
class FastSortimpl(SortImpl):
    
    def sort(self, data):
        return data.sort()

class SlowSortImpl(SortImpl):
    
    def sort(self, data):
        return data.sort() # медленная сортировка

class FastSortImpl(SortImpl):
    
    def sort(self, data):
        return data.sort() # якобы быстрая сортировка

if __name__ == '__main__':    
    abstraction = SortAbstraction()
    abstraction.sortImpl(SlowSortImpl())
    print(abstraction.sort([2,1,3]))
    
    abstraction.sortImpl(FastSortImpl())
    print(abstraction.sort([2,1,3]))

-------------------------
[1, 2, 3]
[1, 2, 3]

Site Footer

Sliding Sidebar

About Me

About Me

For whom this blog for?

For those who are interested in modern Internet technologies, IT business, startups, management, quality control, personal effectiveness, motivation. Here I write about what is interesting, about problems I faced and solutions I found. I hope it will be interesting to you either.

What motivates me to write?

The desire to improve, to study deeper topics that interest me. Find people with similar problems and tasks, together look for ways out and solutions.

Feel free to contact if you have anything to say to me

Old Flash site with my artistic works and misuc.