Bis zu einem gewissen Grad ja, das ist Abstraktion, alles, was verwendet, muss nicht wissen, wie es druckt, nur dass es tut. Ein besseres Beispiel wäre die Verwendung eines Repos.
interface UserRepo {
public User getUserByUsername(final String username);
public User updateUser(final User user);
}
Sie Code dann gegen die Schnittstelle. bei Verwendung von Feder Dependency Injection Zum Beispiel:
@Service
public class UserService {
@Resource
private UserRepo userRepo;
public void updateUserEmail(final String username, final String newEmail) {
final User user = userRepo.getUserByUsername(username);
user.setEmail(newEmail);
userRepo.updateUser(user);
}
Userservice nicht weiß, wie das Repo die Nutzer wird immer nur, dass es ist, könnte eine Datenbank verwenden, eine flache Datei oder eine Webservice.
Here is some more info on Abstraction, with pictures!
Also this details the difference between abstraction and polymorphism
Abstraktion ist, wenn Sie mehrere austauschbare Verhaltensweisen haben, die über eine gemeinsame Schnittstelle beispielsweise über Schnittstellen manipuliert werden. Wenn Sie also eine IPrinter-Schnittstelle haben, die mehrere Drucker mit ihren eigenen Druckversionen geerbt haben, wäre das eine Abstraktion. –
Erwägen Sie, konzeptionelle Fragen zur Softwareentwicklung auf http://programmers.stackexchange.com zu stellen. – everton
Der Begriff [Abstraktion] (https: //en.wikipedia.org/wiki/Abstraction_(software_engineering)) bezieht sich auf so viele Dinge in der Programmierung. Eine Methode ist definitiv eine Kontrollabstraktion, da sie die Details davon abstrahiert, wie gedruckt wird. Der Argumenttyp "String" wäre eine Datenabstraktion. Es ist die gewählte Generalisierung, die die meisten Druck-Anwendungsfälle berücksichtigen sollte. Man könnte auch 'print (Datei-Datei)' und 'Datei' wäre auch eine Abstraktion, aber höchstwahrscheinlich auf der falschen Abstraktionsebene, da es wahrscheinlich eine schlechte Generalisierung ist. – plalx