【问题标题】:Does it make sense to have a base service, and if so is this a good way of doing it?拥有基础服务是否有意义,如果是这样,这是一个好方法吗?
【发布时间】:2013-10-20 00:59:42
【问题描述】:

我刚开始使用 Angular,我想知道拥有一个基础服务类是否是个好主意,如果是这样,这是否是一种好方法?

    var app = angular.module('UserList', ['ngResource']);

    app.service('BaseService', function() { 
        return {
            resource: '',

            setResource: function(res) {
                resource = res;
                return this;
            },

            all: function() {
                return resource.query();
            },

            find: function(id) {
                return resource.get({id: id});
            },

            save: function(user) {
                return resource.save(user)
            }
        }
    });

    app.service('UserService', ['$resource', 'BaseService', function($resource, $base) {
        var resource = $resource('/users/:id', {id: '@id'});    

        return $base.setResource(resource);
    }]);

    app.controller('UserCtrl', ['$scope', 'UserService', function($scope, User) {
        $scope.users = User.all();

        $scope.addUser = function() {
            $scope.users.push({
                first_name: $scope.user.first_name
            })

            User.save($scope.user);
        };
    }]);

我的想法是,现在添加一个带有新端点的“PostService”非常简单:

    app.service('PostService', ['$resource', 'BaseService', function($resource, $base) {
        var resource = $resource('/posts/:id', {id: '@id'});    

        return $base.setResource(resource);
    }]);

如果您有关于这种方法的任何 cmets,或者关于任何 Angular(即策略、命名约定等)的任何提示/建议,我将不胜感激!

问候, 克里斯

【问题讨论】:

    标签: javascript angularjs javascript-framework


    【解决方案1】:

    拥有基础服务是否有意义,如果是这样,这是一种好方法吗?

    肯定是它的好设计。就像所有面向对象的语言一样,它的好习惯 使用继承。继承的主要好处是它提供了代码重用的正式机制。作为重构过程的一部分,任何共享的业务逻辑都可以从派生服务移动到基础服务,从而通过避免代码重复来提高代码的可维护性。

    如果您对这种方法有任何 cmet,或任何提示/建议...

    关于$resource 文档,$resource('/posts/:id', {id: '@id'});,从示例返回promise。因为$resource 依赖于$http。并非所有服务都是异步的。如果我有很多服务,我会对它们进行排序(或通过添加一些后缀来签名)这些服务是异步的。

    【讨论】:

      猜你喜欢
      • 2014-09-29
      • 2016-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多