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