Diciamo che ho un oggetto del genere:
function Foo() {
this.parser = new DataParser();
};
All'interno di Foo ho un metodo che fa qualcosa del genere:
Foo.prototype.getResponse = function(message, callback) {
var payload = {data: message, type: 'normal'};
var response = this.parser.parse(payload, function(data){
callback(data);
});
}
Ora, diciamo che da qualche altra parte devo chiamare foo.getResponse()
. Il più delle volte voglio che venga eseguito proprio così, ma a volte ho bisogno che il formato di payload
sia leggermente diverso - diciamo che devo specificare un tipo diverso.
Sarebbe meglio creare un metodo diverso per questo tipo di richiesta leggermente diverso, ad esempio ...
Foo.prototype.getSimilarResponse = function(message, callback) {
var payload = {data: message, type: 'other'};
var response = this.parser.parse(payload, function(data){
callback(data);
});
}
... o per prendere un'opzione su getReponse
, in questo modo ...
Foo.prototype.getSimilarResponse = function(message, type, callback) {
var payload = {data: message, type: type};
var response = this.parser.parse(payload, function(data){
callback(data);
});
}
... o per fare qualcos'altro interamente?
L'uso di un'opzione type
nell'esempio sopra è molto più DRY, ma non mi piace il modo in cui richiede al chiamante di conoscere il tipo di payload, che è davvero la preoccupazione di Foo
e non devono essere esposti altrove.
Come consiglieresti di affrontare una situazione come quella sopra?