• 设计模式之门面模式


    门面模式

    门面模式是把具体的实现放在自己内部,对外提供一个外观给外部去调用。让使用者可以很方便地使用它。这样可以做到内部的变更交给内部自己去处理,使得责任单一。也让我们的系统不需要暴露太多的细节给外部。

    实例代码

    public class User {
        
        private String name;
        
        private String password;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
        
    }
    
    /**
     * 消息体
     * @author wxh
     * @vertion 1.0
     */
    public class Status {
    
        private int code;
        
        private String message;
    
        public int getCode() {
            return code;
        }
    
        public void setCode(int code) {
            this.code = code;
        }
    
        public String getMessage() {
            return message;
        }
    
        public void setMessage(String message) {
            this.message = message;
        }
        
    }
    
    /**
     * 创建用户的服务接口
     * @author wxh
     * @vertion 1.0
     */
    public interface ICreateUserService {
        
        boolean createrUser( User user ); 
    
    }
    
    /**
     * 修改用户密码的服务接口
     * @author wxh
     * @vertion 1.0
     */
    public interface IPasswordService {
        
        boolean changePassword( String name, String newPassword );
    
    }
    
    /**
     * 处理用户信息的服务接口
     * @author wxh
     * @vertion 1.0
     */
    public interface IUserService {
        
        Status createUser(String name, String password);
        
        Status changeUserPassword(String name, String password);
    
    }
    
    /**
     * UserService其实就是一个对外公开的门面
     * @author wxh
     * @vertion 1.0
     */
    public class UserService implements IUserService{
    
        private ICreateUserService createUserService;
        
        private IPasswordService passwordService;
        
        @Override
        public Status createUser(String name, String password) {
            Status status = new Status();
            
            User user = new User();
            user.setName( name );
            user.setPassword( password );
            
            //隐藏具体的实现细节
            boolean result = createUserService.createrUser( user );
            
            if ( result ) {
                status.setCode(0);
                status.setMessage("用户创建成功!");
            } else {
                status.setCode(-1);
                status.setMessage("用户创建失败!");
            }
            return status;
        }
    
        @Override
        public Status changeUserPassword(String name, String newPassword) {
            Status status = new Status();
            
            //隐藏具体的实现细节
            boolean result = passwordService.changePassword(name, newPassword);
            
            if ( result ) {
                status.setCode(0);
                status.setMessage("密码修改成功!");
            } else {
                status.setCode(-1);
                status.setMessage("密码修改失败!");
            }
            return status;
        }
    
    }
  • 相关阅读:
    怎样防止应用因获取IDFA被AppStore拒绝
    多校第九场Arithmetic Sequence题解
    Hadoop文件解压缩
    FZU 2087 统计树边【MST相关】
    hdu2647(拓扑排序)
    jsp自己主动编译机制
    AsyncTask的原理和缺点
    C语言之文件操作08——总结
    Android API 文档 离线秒开方法
    在Windows8系统下exe格式会计课件下载播放帮助图解
  • 原文地址:https://www.cnblogs.com/dahao1020/p/5537706.html
Copyright © 2020-2023  润新知