晚上發了幾個小時,總結出來給大家分享一下,查看書籍和一些資料,下面是我對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{@Overridepublic 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;}@Overridepublic 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;}@Overridepublic 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;}@Overridepublic 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帶來更好的理解........有什麼理解不對的地方,請各位指正 謝謝!