稳固而知新 FACADE,MEDIATOR

本文探讨了软件设计中的Facade模式和Mediator模式。Facade模式为复杂接口提供简化方案,Mediator模式则隐式地施加策略。通过具体示例说明了两种模式的应用场景和实现方式。
FAÇADE
       该模式为一组具有复杂且全面的接口对象提供一个简单且特定的接口。
       应用此模式后,App完全不知道JNDI的内部细节,JndiFacade隐藏了JNDI的复杂性,并对App提供简单的接口,对App来说,JNDI是不存在的。JndiFacade是JNDI的唯一代理。
       Façade模式是以明显且受限的方式来施加它的策略。使用时必须主动地调用它,使用者必须理解该策略的使用含义。
 
 
MEDIATOR
       该模式相对于Façade的显式策略,它是以隐藏的方式来施加策略。
public class TextValidMediator {
       Text text;
       Label label;
       Validator validator;
       public TextValidMediator(Text t, Label l, Validator v) {
              text = t;
              validator = v;
              label = l;
              text.addModifyListener(new ModifyListener() {
                     public void modifyText(ModifyEvent event) {
                            String s = text.getText();
                            s = validator.valid(s);
                            if (s != null) {
                                   label.setText(s);
                            }
                     }
              });
       }
}
 
使用时:
Validator valid = new Validator() {
                     public String valid(String input) {
                            String result = null;
                            try {
                                   int i = Integer.parseInt(input);
                                   if (i > 0 && i < 65534) {
                                          return null;
                                   }
                            } catch (NumberFormatException e) {
                            }
                            return "Invalid port ";
                     }
              };
TextValidMediator mediator = new TextValidMediator(text, label, valid);
 

       Validator是一个接口,子类实现它来满足具体的校验规则。TextValidMediatorText添加输入数据的验证功能,如果在Text上输入,Validator会对输入的数据进行校验,如果有错误,就显示在Label上。TextValidMediatorText注册了一个ModifyListener,一旦Text检测到输入有改变,就调用ModifyListener中的方法,通过Validator对象进行有效性校验。Text并不知道TextValidMediator的存在,也不知道要对其进行的校验规则,TextValidMediator是悄悄的把策略施加到Text上的。




评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值