晚上发了几个小时,总结出来给大家分享一下,查看书籍和一些资料,下面是我对Facade模式的理解
老样子,上传demo
package Facade;
/**
*@Description: Facade模式
*@author Potter
*@date 2012-9-7 下午09:35:11
*@version V1.0
*/
public class App {
public static void main(String[] args) {
UserService userService=new UserService();
User user1=new User();
user1.setName("小白");
user1.setPassword("123456");
//功能1:将小白替换成小黑
User user2=new User();
user2.setName("小黑");
user2.setPassword("123456");
Status status=userService.replace(user1,user2);
System.out.println("status's code="+status.getCode()+",message="+status.getMessage());
//------------------------
//功能2:比较user3和user4的等级
User user3=new User();
user3.setRank(User.common);
User user4=new User();
user4.setRank(User.diamond);
Status status2=userService.compareUserRank(user3, user4);
System.out.println("status2's code="+status2.getCode()+",message="+status2.getMessage());
}
}
服务1接口:
package Facade;
/**
*@Description:
*@author Potter
*@date 2012-9-7 下午08:35:02
*@version V1.0
*/
public interface IServiceOne {
public static final int high=0;
public static final int equal=1;
public static final int low=2;
int compareUserRank(User user1,User user2);
}
服务接口2:
package Facade;
/**
*@Description:
*@author Potter
*@date 2012-9-7 下午08:35:02
*@version V1.0
*/
public interface IServiceTwo {
boolean replace(User user1,User user2);
}
facade模式核心接口:
package Facade;
/**
*@Description: Facade模式核心
*@author Potter
*@date 2012-9-7 下午08:39:05
*@version V1.0
*/
public interface IUserService {
Status compareUserRank(User user1,User user2);
Status replace(User user1,User user2);
}
子系统服务接口实现类:
package Facade;
/**
*@Description:
*@author Potter
*@date 2012-9-7 下午09:46:50
*@version V1.0
*/
public class UserOption implements IServiceOne,IServiceTwo{
@Override
public int compareUserRank(User user1, User user2) {
int result=0;
if(user1.getRank()>user2.getRank()){
result=high;
}else if(user1.getRank()==user2.getRank()){
result=equal;
}else{
result=low;
}
return result;
}
@Override
public boolean replace(User user1, User user2) {
if(user2!=null){
user1=user2;
return true;
}
return false;
}
}
facade模式中介类:
package Facade;
/**
*@Description: Facade模式中介
*@author Potter
*@date 2012-9-7 下午08:42:13
*@version V1.0
*/
public class UserService implements IUserService{
private IServiceOne oneService;
private IServiceTwo twoService;
public UserService(){
UserOption userOption=new UserOption();
oneService=userOption;
twoService=userOption;
}
@Override
public Status compareUserRank(User user1, User user2) {
int result=oneService.compareUserRank(user1, user2);
Status status=new Status();
status.setCode(2);
if(result==IServiceOne.high){
status.setMessage("高级");
}else if(result==IServiceOne.equal){
status.setMessage("平级");
}else{
status.setMessage("低级");
}
return status;
}
@Override
public Status replace(User user1, User user2) {
boolean result=twoService.replace(user1,user2);
Status status=new Status();
if(result){
status.setCode(1);
status.setMessage("替换成功");
}else{
status.setCode(-1);
status.setMessage("替换失败");
}
return status;
}
}
User类:
package Facade;
/**
*@Description: 用户名类
*@author Potter
*@date 2012-9-7 下午08:35:37
*@version V1.0
*/
public class User {
public static final int common=0;//普通用户
public static final int gold=1;//黄金用户
public static final int diamond=2;//钻石用户
private String name;
private String password;
private int rank;
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;
}
public int getRank() {
return rank;
}
public void setRank(int rank) {
this.rank = rank;
}
}
Status类:
package Facade;
/**
*@Description:
*@author Potter
*@date 2012-9-7 下午08:39:46
*@version V1.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;
}
}
希望对大家facade带来更好的理解........有什么理解不对的地方,请各位指正 谢谢!