应用场景:
1、不需要使用一个复杂系统的所有功能,而且可以创建一个新的类,包含访问系统的所有规则,如果只需要使用系统的部分功能,那么为新类创建的API将比原有系统简单得多
2、希望封装或隐藏原系统
3、希望使用原系统的功能,而且还希望增加一些附加功能。
特点:
1、从客户程序的角度来看,外观模式不仅简化了整个组件系统的接口,同时对于组件内部与外部客户程序来说,从某种程度上来说,达到了一种解藕的效果==内部子系统的任何变化不会影响到外观模式接口的变化
2、外观模式更注重从架构的层次去看整个系统,而不是单个类的层次,外观模式更多时候为一种架构设计模式
3、外观模式注重简化接口,适配器模式注重转换接口, 桥接模式注重分离接口与其实现,装饰者模式注重稳定接口的前提下为对象扩展功能。
public interface UserDAO {
public List findByUsername(Object username,Object password);
public List findByUsername(Object username);
public List findBuUserPassword(Object password);
public List findByUserPortalUrl(Object userPortalUrl);
public List findByEmail(Object email);
public List findByUrl(Object url);
public List findByRole(Object role);
}
public class UserDAOImp implements UserDAO{
@Override
public List findByUsername(Object username, Object password) {
// TODO Auto-generated method stub
return null;
}
@Override
public List findByUsername(Object username) {
// TODO Auto-generated method stub
return null;
}
@Override
public List findBuUserPassword(Object password) {
// TODO Auto-generated method stub
return null;
}
@Override
public List findByUserPortalUrl(Object userPortalUrl) {
// TODO Auto-generated method stub
return null;
}
@Override
public List findByEmail(Object email) {
// TODO Auto-generated method stub
return null;
}
@Override
public List findByUrl(Object url) {
// TODO Auto-generated method stub
return null;
}
@Override
public List findByRole(Object role) {
// TODO Auto-generated method stub
return null;
}
}
public interface UserService {
public boolean login(String username,String password);
}
public class UserServiceImp implements UserService{
private UserDAO userDAO;
public void setUserDAO(UserDAO userDAO){
this.userDAO = userDAO;
}
public UserDAO getUserDAO(){
return userDAO;
}
@Override
public boolean login(String username, String password) {
if (userDAO.findByUsername(username,password)!=null) {
return true;
}
return false;
}
}