Код на джаве, но суть ООП одна и та же. Материал это интерфейс, конкретный материал - его реализация. В методы первого класса подаем интерфейс, дальше работает полиморфизм.
class A {
void save(Material m) {
m.save();
}
void delete(Material m) {
m.delete();
}
}
interface Material {
void save();
void delete();
}
class MaterialNumberOne implements Material {
void save() {
//делаем что нужно для первого материала
}
void delete() {
//делаем что нужно для первого материала
}
}
class MaterialNumberTwo implements Material {
void save() {
//делаем что нужно для второго материала
}
void delete() {
//делаем что нужно для второго материала
}
}
// юзаем так
public static void main(String[] args) {
Material m1 = new MaterialNumberOne();
Material m2 = new MaterialNumberTwo();
A a = new A();
a.save(m1);
a.delete(m1);
a.save(m2);
a.delete(m2);
}