`
chandler
  • 浏览: 83538 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

自己网站的UserFactory类介绍

OO 
阅读更多

  UserFactory类
     UserFactory我为了达到除了一些类当中的get和set方法之外的,与外部有联系的唯一的一个类的效果。所以一些和初衷(这个类只是处理User和其他类的组装)相背的方法也写入到了这个类当中。
      当然写个网站我还刚刚开始。这些方法不可能都很实用。所以以后还要扩展。
      整个用户系统的源代码可以再附件中得到。

    
/**
     这是我写的第一个方法。主要是通过用户名,密码来获取一个User。很多关于User的很多想法也是在这个类中慢慢的成熟的。概括下来为以下这几点。
     首先,User分为简短的完整的区别。这当然还是基于一些实际的估计,因为User很多时候只是一个身份的标识,而得user类定位在是一个用户的代表,所以就想到了区别。但是实现起来的方法还是比较原始,这里就不说了。当让希望以后能够用到代理的想法。
*/
         public User getUserByName (String username,String password) 
                                            throws UserNotExistException,              //用户不存在错
                                                      PasswordWrongException,             //密码不对错
                                                      RoleWrongException{                 //权限不错在错

/**
*      添加一个用户,在这里,你也可以看到参数都是对象
*      在写这个方法的最开始,我也想过就是提供一些基本的个人信息做为参数,比方说,我就建了个参数有用户名,密码和userinfo的方法。而这个方法调用哪个方法。
*      但是最后放弃了。因为那样不OO,最近在看《代码大全》。在里面学到了一个叫做抽象数据(具体的名字忘了)的概念。我的理解应该是把数据当成一个对象来进行思考,而不是基本的数据。因为对象相对于数据有着更不容易变化的特性。*  比方说这里,现在有User类有ID(数据库自动生成),name和password(由于我把password的set的作用域写成了default,无法包外调用,所以这里只好当做参数传入)。那么现在看似那个方法比较可行。但是如果说日后,我打算往User里   *  加入其它参数呢?就需要一个新的函数。可能调用它的所有方法都需要改。但是如果我把它当成一个User,那显然方便了很多。
*/
         public boolean storeUser(User user,UserInfo userinfo,String password)
/**
*    这个类的作用就是用数据库中的数据,初始化user里的userinfo属性。
      其实这里的这个方法我觉得比较容易放入infoutils这个类中,但是呢,最后我还是把它放在了这里。因为我觉得,userfactory应该是唯一和外界交互的一个类。
      这个方法,在实际操作的时候,我写了一个Transaction类来实现数据库的事务。
* @param user
*/
     public void iniUserInfo(User user)
/**
* 作用同上,如果细心,可以发现这个方法会抛一个异常。而在初始化信息的时候则不会。因为我觉得,一个用户的肯定有一个角色,如果找不到,那么就是出错。但是一个用户可以没有详细的信息。
* @param user
* @throws RoleWrongException
*/
       public void iniUserRole(User user) throws RoleWrongException{             //权限装载出错

/**
* 判断用户是否存在,
* @param username
* @return boolean ture为该用户存在 false为该用户不存在
*/
         public boolean userExist(User user)
/**
* 因为有些用户需要在外面装配么,需要一个空的userInfo类。这里出去的userInfo类的id已经获得了一个UUID
* @return
*/
    public UserInfo getEmptyInfo()

/**
* 作用同上面那个方法。
* @return
*/ 
     public User getEmptyUser()
/**
* 测试密码是否为这个用户的
* @param user          被测试的用户
* @param password      测试的密码
* @return              一致,则为true,反之则为false
*/
         public boolean checkPassword(User user,String password)

/**
* 删除用户
* @param user
*/
         public void deleteUser(User user)

/**
*  更改密码
* @param user
* @param newpassword
* @return 修改成功返回true,反之则为false
*/

     public boolean ChangePassword(User user,String newpassword)

/**
*     修改个人信息。
* @param user
* @return
*/
     public boolean modifyinfo(User user)
1
0
分享到:
评论

相关推荐

    Laravel开发-laravel-fixtures

    - `README.md`: 可能包含项目介绍和使用说明。 **四、使用 Fixtures** 1. **创建 Seeder**: 使用 Artisan 命令 `php artisan make:seeder MySeeder` 创建一个新的 seeder 类。 2. **定义填充逻辑**: 在创建的 ...

    php设计模式

    在这个例子中,`UserFactory` 类扮演了工厂的角色,而 `IUser` 是抽象产品角色,`User` 类则是具体产品角色。 **实际应用**: 在实际项目中,工厂模式可以用于创建数据库连接、日志记录器等组件,特别是当需要动态...

    PHP常见设计模式详解

    **定义**:工厂模式是一种创建型设计模式,它提供了一个创建对象的接口,但允许子类决定实例化哪一个类。工厂方法让类的实例化延迟到子类。 **目的**:工厂模式的主要目的是隐藏创建细节,使客户端不必知道具体的...

    Laravel开发-l5-fixtures

    下面将详细介绍Laravel 5中关于fixtures的相关知识。 ### 1. 数据库固定装置(Fixtures) 数据库固定装置是测试中的一个概念,指的是预定义的一组数据,这些数据在测试开始前会被插入到数据库中,为测试提供已知的...

Global site tag (gtag.js) - Google Analytics