⚔️პოლიმორფიზმის მაგალითი
<?php
// ორივეს ფუნქციონალი უნდა შეიცავდეს მონაცემთა ჩაწერასა და წაკითხვას.
// შესაბამისად მათ ინტერფეისს განვუსაზღვროთ store და fetch მეთოდები.
interface StorageService
{
public function store($data);
public function fetch();
}
// მონაცემთა ბაზის კლასი
class DatabaseService implements StorageService
{
public function store($data)
{
// მაგალითის სიმარტივისთვის წარმოვიდგინოთ რომ აქ წერია განხორციელების გზა
// store data in database Code
print "data stored \n";
}
public function fetch()
{
// fetch data from database Code
print "data fetched \n";
}
}
// რედისის კლასი ქეშირებისთის
class RedisService implements StorageService
{
public function store($data)
{
// განხორციელების გზა განსხვავდება DatabaseService-ისაგან
// Cache data Code
print "data stored \n";
}
public function fetch()
{
// fetch Cached data Code
print "data fetched \n";
}
}
// დავუშვათ გვაქვს ფუნქცია რომელსაც გადავცემთ პარამეტრად სერვისს
// StorageService ინტერფეისიდან გამომიდინარე ჩვენ უკვე ვიცით რომ მას აუცილებლად ექნება ->store() მეთოდი
function storeData(StorageService $service){
$service->store("some Data");
}
// ფუნქციის გამოძახებისას საკმარისია გადავცეთ მას ჩვენი კლასის ინსტანსი
// და შესაბამისად შეიცვლება მთელი ფუნქციონალი
storeData(new DatabaseService());
// მაგალითად ამჯერად თუ გინდა ინახებოდეს ქეშში და არა ბაზაში უბრალოდ
// DatabaseService-ს ჩავანაცვლებთ RedisService-ით და ყველაფერი მზადაა
storeData(new RedisService());
Last updated