`
xly_971223
  • 浏览: 1264675 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
虽然分层可以降低耦合 但是越来越觉得分层是牺牲了面向对象的封装性 把本来应该在一个类中的一些方法 分散到几个类中。 举个例子来说 用户 User类 public class User { private String name; private String sex; private String eMail; private int age; } 现在我想修改eMail 按照oo应该是 添加一个方法 public class User { private String name; private String sex; private String eMai ...
aop自动代理就是不需要为每一个目标bean定义一个代理bean,而是通过对目标bean的‘bean后处理’把目标bean修改为代理bean。 bean后处理就是BeanPostProcessor接口,实现了这个接口的bean在容器加载的时候会被容器识别。
桥梁模式的用意是将问题的抽象和实现分离开来实现,通过用聚合代替继承来解决子类爆炸性增长的问题。 比如我们有一个画图程序 有2个图形(Circle Rectangle )和2种画图方法(Drawing1 Drawing2) 图形可能会使用Drawing1来画图 也可能使用Drawing2来画图 在这个画图程序中有两个可变因素 一个是图形的种类 有可能会增加新的图形 另一个是画图方法 可能会有Drawing3出现 当系统有两个可变因素时 我就应该考虑到桥梁模式,至少它应该在你的脑子里闪过 在面向对象设计中有两条重要原则 1.找出变化并封装之 2.优先使用聚合而不是继承 这两条将在桥梁模式中得到完美 ...
抽象工厂模式可以分为两个继承层次来说 一个是工厂类的继承层次 如 /** * 分辨率工厂 * @author xuly * */ public interface ResolutionFactory { DisplayDriver createDisplayDriver(); PrintDriver createPrintDriver(); } /** * 高分辨率工厂 * @author xuly * */ public class HighResFactory implements ResolutionFactory { pub ...
以前看过别人写的用js的showModalDialog做用户登录 今天闲着没事做了一下 感觉不错 采用ModalDialog做登录,最大优点就是省去了传递url的麻烦 下面列出关键代码 当作备忘吧 父窗口代码:window.showModalDialog('login.jsp', window);//这个window作为参数传递到子窗口,当登录成功后可通过这个对象刷新父窗口 子窗口代码: window.dialogArguments.document.location.reload();//刷新父窗口 window.close(); //关闭自己 还有一个关键代码: <base targ ...
对于开发者来说 由于数据结构的变化导致程序的修改无疑是让人头疼的 。尤其是那些频繁的修改 今天加一个字段 明天又加一个字段, 大量的时间都浪费在修改这些无关紧要的工作上了。 好了,言归正传  先看下面一个小例子 //商品类 public class Product{ private long productId; private String category; private String productCode; private String productName; } //推荐商品类 ,如推荐到首页 public cla ...
需求: 将A B C类对应的三个对象a b c保存在http session中,并对每个类进行封装 如下 public class AHelper { private A a; private HttpServletRequest request; public AHelper(HttpServletRequest request) { this.request = request; a = (A)request.getSession().getAttribute("a_key"); if(a == null){ a ...
StrutsAction的action代码如下 /** * 简单封装Struts DispatchAction的基类. * 提供一些基本的简化函数,将不断增强. * * @author calvin */ public class StrutsAction extends DispatchAction { public static final String SUCCESS = "success"; public static final String DIRECTLY_MESSAGE_KEY = "message"; ...
这几天看一下<重构与模式>,里面提到了过度设计的问题,很多人在学习了模式之后,患上了模式痴迷症,想方设法在程序中使用模式(我就犯过这个错误),结果导致简单的问题复杂化,自己浪费了很多时间 写出来的却是一些意义不大的代码。 回到我们的j2ee中来,大把的模式被用在各层之间,各种个样的继承 接口,刻意的追求模式,我们的程序真的需要那些模式吗?我看未必。 那么到底应该怎么应用模式呢?《重构与模式》给出了很好的答案:从重构到模式,当然要重构就离不开TDD。 书里的大概思想是 1.快速的写完你要做的事情,然后测试 2.然后应用合适的重构方法去重构代码,中间就可能演化出所需的模式。(本书主要是介 ...
在dao层通常会抛出一个DaoException如下 class UserDao{ public void insert(User user)throws DAOException{ //dao code } } 在业务层调用时应该怎样处理这个DAOException呢? 个人认为用两种方式 第一种方式: 不进行处理直接抛给web层  第二种方式 转换成某种业务异常 第一种的缺点是将底层的异常暴露给了客户端  优点是web层可以明确感知到dao层发生异常并告知浏览器用户 第二种正好跟第一种相反: 缺点是web层不知道发生了dao异常,catch到的 ...
  业务层应该不应该出现事务控制代码 这个问题已经在业界达成共识:业务层绝对不应该出现事务控制代码,严格的说不应该出现与业务无关的代码。 在aop没有出现以前是怎样控制的呢? 似乎没有很好的方法 但是随着spring的出现aop的风靡 这个问题得到了比较优雅的解决 <o:p> </o:p> 例如 <o:p> </o:p> 有业务方法 bizMethod(){        //business code        dao.insert(); <o:p> </o:p>        //business code      ...
  用跨域cookie实现sso 是比较简单的 主要用两个操作:登陆和登出 <o:p> </o:p> 登陆操作  --- SSOLoginServlet来实现 用户输入用户名密码 Sso server验证其正确性 将用户名加密后写入cookie Cookie cookie = new Cookie(SSOConst.SSOID_KEY, ssoid);               cookie.setMaxAge(maxAge);               cookie.setDomain(".ecc.com");               co ...
Jboss3.2.3实现的SSO是基于客户端cookie和服务器端session的工作的。 基本工作流程是: 在${JBOSS_HOME}/server/default/deploy/jbossweb-tomcat41.sar/META-INF/jboss-service.xml中配置一个SSO的Valve,在待使用SSO的虚拟主机下加入如下代码: 启动Jboss时,Jboss会加载该Valve,创建一个org.jboss.web.tomcat.tc4.authenticator.SingleSignOn的实例(以下简称该实例为ourSSO)。 ourSSO实例会维护两个HashMap,分别为s ...
sso中首先要解决的问题就是多个应用之间的身份传递,即应用A中的登录信息怎么传到应用B中呢? 跨域Cookie是一种解决方法 跨域cookie是指在几个应用之间共享一个Cookie,这样在各个应用之间切换时就可以通过获取这个公用的cookie来检查用户是否登录过。 那么cookie中的数据是否需要加密呢? 我们来看一个例子 sso.ecc.com A.ecc.com B.ecc.com 这三个应用共享一个Cookie('loginId', '1234'); 如果是这样简单的明文那么别人可以很容易的在自己的应用中写这么一个 很多人说共享cookie不安全 它到底不安全在哪儿呢? 思考中。。。
正常的cookie只能在一个应用中共享,即一个cookie只能由创建它的应用获得。 1.可在同一应用服务器内共享方法:设置cookie.setPath("/");     本机tomcat/webapp下面有两个应用:cas和webapp_b,     1)原来在cas下面设置的cookie,在webapp_b下面获取不到,path默认是产生cookie的应用的路径。     2)若在cas下面设置cookie的时候,增加一条cookie.setPath("/");或者cookie.setPath("/webapp_b/");就可以在 ...
Global site tag (gtag.js) - Google Analytics