zoukankan      html  css  js  c++  java
  • 设计模式之门面模式

    门面模式

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

    实例代码

    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;
        }
    
    }
  • 相关阅读:
    Textarea自适应文字内容调整高度
    把页面某内容放入粘贴板中
    通过javamail发送电子邮件
    Jrebel+tomcat实现热部署
    Eclipse启动Tomcat时,45秒超时解决方式
    mybatis 多对多 处理
    单例模式
    Centos6安装mysql5.7
    maven手动导入jar包到本地仓库
    Jsp与servlet本质上的区别
  • 原文地址:https://www.cnblogs.com/dahao1020/p/5537706.html
Copyright © 2011-2022 走看看