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;
        }
    
    }
  • 相关阅读:
    Go interface{}、类型断言
    相关资料
    php实践
    安装zookeeper
    对象池化,对象池
    java getResourcesAsStream()如何获取WEB-INF下的文件流
    android--SDK Manager下载Connection to http://dl-ssl.google.com refused
    Intellij idea 切换SVN路径
    Intellij Idea @Autowired取消提示
    恢复文件默认打开方式
  • 原文地址:https://www.cnblogs.com/dahao1020/p/5537706.html
Copyright © 2011-2022 走看看