У меня есть класс карты:Лучшая практика проектирования для разделения общего кода?
function Card() {
this.image = new Image();
this.x = 0;
this.y = 400;
this.initialX = 0;
this.initialY = 0;
this.scaleFactor = 4;
this.setImage = function(ii){
this.image.src = ii;
};
this.getWidth = function(){
if (this.image == null){
return 0;
}
return this.image.width/this.scaleFactor;
}
this.getHeight = function(){
if (this.image == null){
return 0;
}
return this.image.height/this.scaleFactor;
}
this.pointIsInCard = function(mx, my){
if (mx >= this.x && mx <= (this.x + this.getWidth()) && my >= this.y && my <= (this.y + this.getHeight()))
{
return true;
}
else{
return false;
}
};
};
я тогда класс палубы:
function Deck(x, y, w, h){
this.x = x;
this.y = y;
this.width = w;
this.height = h;
this.cards = [];
}
Мне нужно добавить метод в Deck
класса аналогично pointIsInCard
вместо этого он будет называться pointIsInDeck
. Логика будет такой же, чтобы проверить, попадает ли переданная точка в границу объекта. Поэтому, увидев это дублирование кода, я хотел знать, что такое хорошая практика проектирования, чтобы избежать этого дублирования? Один из вариантов, о котором я думал, заключался в том, чтобы извлечь метод и создать функцию для общего объекта с x
, y
, width
, height
, но опять же из принципов ООП я думал, что этот метод должен принадлежать классу/объекту. Я ценю любую помощь! Благодаря!
Have Helper класс, где вы передаете объект для поиска, координаты точки, ш и ч. – Justinas
Являются ли параметры одинаковыми для каждой функции? – guest271314
Или у вас есть супер/предок как колоды, так и карты, у которой есть метод. – RobG