На сколько корректно примерное описание классов?
public static void main(String[] args){
Animal cat = new Cat(3,"Брсик");
Animal dog = new Dog(5,"Вульф");
List<Animal> myAnimal = Arrays.asList(cat, dog);
for (Animal animal : myAnimal) {
cat.eat();
dog.eat();
}
}
public interface Animal {
int getAGe();
String getName();
void walk();
void eat();
void sleep();
}
public abstract class Canidae implements Animal {
private final int age;
private final String name;
public Canidae(int age, String name) {
this.age = age;
this.name = name;
}
public int getAGe() {
return age;
}
public String getName() {
return name;
}
}
public abstract class Felidae implements Animal {
private final int age;
private final String name;
public Felidae(int age, String name) {
this.age = age;
this.name = name;
}
public int getAGe() {
return age;
}
public String getName() {
return name;
}
}
public class Dog extends Canidae {
public Dog(int age, String name) {
super(age, name);
}
public void walk() {
}
@Override
public void eat() {
System.out.println("Хрум");
}
public void sleep() {
}
}
public class Cat extends Felidae {
public Cat(int age, String name) {
super(age, name);
}
public void walk() {
}
public void eat() {
System.out.println("Ням");
}
public void sleep() {
}
}
ИМХО структура явно перегружена. Что изменится если интерфейс Animal
сделать абстрактным классом и общим предком Canidae
и Felidae
? Ответ ничего. Стало быть интерфейс Animal
излишен.
Вообще интерфейс описывает не сущность класса, а поведение класса, уже с этой точки зрения интерфейс Animal
не выдерживает критики.
Лучше бы сделать интерфейс:
public interface Climbable { //лазающий
public void climb();
}
Тогда кошачий класс будет иметь специальное поведение:
public abstract class Felidae extends Animal implements Climbable {
}
По своему скромному мнению хочу отметить несколько проблем, которые я заметил:
private
, то в названии
стоит добавить _
(underscore) (может еще стоит начать использовать свойства
)Animals
описаны некоторые методы (eat()
,
walk()
, sleep()
). Все вроде бы неплохо, но если к примеру у
собаки бессоница ? Или же она к примеру не может ходить. Или из-за
своей бессоницы у нее пропал аппетит ? Что тогда ? Если Ваши классы с
домашними животными реализовывают этот интерфейс, то по сути, класс который реализует интерфейс, должен описывать все методы, объявленные в интерфейсе.На Вашем месте, я бы почитал про очень интересный патерн проектирования
под названием: стратегия.
Удачи !
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Не могу программно поместить изображение (на основе выбранной позиции в spnner) во FrameLayout
Есть String, в которой Json ответ, как в Java можно распарсить это строку в объект? Есть ли какие-нибудь внешние или стандартные бибилиотеки?
Подскажите, пожалуйста в чем может быть проблема - клиент подключается, но не передает данные на сервер ? (В логах пусто) Клиент и сервер находятся...