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;
        }
    
    }
  • 相关阅读:
    sinaapp+wordpress
    用JavaScript实现本地缓存
    Javascript的IE和Firefox(火狐)兼容性
    150个javascript特效
    学习Javascript闭包(Closure)
    JS bingo卡片
    Response.Write详细介绍[转]
    JS实现鼠标经过时背景色缓慢改变
    为什么引用不了App_Code里的类
    SQL SERVER 2008 R2配置管理器出现“远程过程调用失败”【0x800706be】的解决办法
  • 原文地址:https://www.cnblogs.com/dahao1020/p/5537706.html
Copyright © 2011-2022 走看看