полиморфизма Сделки Javascript ООП:ООП Советов, чтобы избавиться от коммутатора заявления с использованием прототипом
Я attemping, чтобы получить лучше ООП в JavaScript и в настоящее время работает над решением ООП для обработки различных типов коммерческих сделок , Покупка, ставка и т. Д.
У меня были все действия продавца в одной стороне оператора if с переключателем для обработки каждого типа транзакции.
Тогда я сделал то же самое для покупателя.
Пройдя это, я улучшил структуру кода, поэтому его легче читать, но я считаю, что «SWITCH» внутри processSellerTransactions и processBuyerTransactions ошибочны.
, если у меня есть все прототипы setup (buy, bid) и т. Д. Я бы хотел просто вызвать функцию прототипа напрямую, не используя инструкцию switch.
Может ли кто-нибудь указать мне в правильном направлении (учебники и т. Д.) Или указать, что я делаю неправильно.
Я получаю это (kindof), но это все еще довольно новый, поэтому любая помощь будет принята с благодарностью.
Заранее спасибо.
var Transaction = function(transactionType) {
this.transactionType = transactionType;
};
Transaction.prototype.buy = function(){
console.log("Buy");
};
Transaction.prototype.bid = function(){
console.log("Bid");
};
function Type(transactionType, transactionId) {
Transaction.call(this, transactionType);
this.transactionId = transactionId;
}
Type.prototype = Object.create(Transaction.prototype);
Type.prototype.constructor = Type;
Type.prototype.processSellerTransactions = function(){
switch(this.transactionType) {
case 'buy':
console.log('do the buy logic for seller');
break;
case 'bid':
console.log('do the bid logic for seller')
break;
}
};
Type.prototype.processBuyerTransactions = function(){
switch(this.transactionType) {
case 'buy':
console.log('do the buy logic for buyer');
break;
case 'bid':
console.log('do the bid logic for buyer')
break;
}
};
var user = 'seller';
var transaction_type = 'buy';
var transaction_id = '12345';
var transaction = new Type(transaction_type, transactionId);
if(user == seller)
transaction.processSellerTransactions();
if(user == buyer)
transaction.processBuyerTransactions();
Благодаря Джону за совет о Образцом стратегии. Вот простой пример, в Javascript
Strategy Pattern In Javascript Example
Похоже, вы действительно хотите сделать подкласс 'BuyType' и' BidType' 'Transaction'? – Bergi
Да, я думаю, что возможно. Я хочу делать все, что мне нужно, чтобы быть способным быстро расширяться. Босс - своего рода сумасшедший создатель, так что скажите, что они приходят в tommorow и говорят. «Мы хотим, чтобы люди также задерживали людей». Если бы это было только два, это было бы довольно легко. Я пытаюсь думать о будущих типах транзакций. Buy, Bid, OnHold, Returned, BackOrdered и т. Д. – smugford