当前位置: 编程技术>综合
本页文章导读:
▪wireless domain亦称 wireless region 关于wireless region的相关相关介绍如下图所示,由于其限制的不仅仅是波段频率,还有其他的一些参数,所以请设置AP与您的STA在一个Region,否则会出现连不上的问题,抓包也很难抓到。
你可以.........
▪协调多个对象之间的交互——中介者模式(三) 20.3 完整解决方案 为了协调界面组件对象之间的复杂交互关系,Sunny公司开发人员使用中介者模式来设计客户信息管理窗口,其结构示意图如图20-7所示:图20-7 引入了中.........
▪(JAVA子类引用指象父类引用)JAVA克隆对象,包括父类属性,无需实现序列化接口 最近做一个东西,需要拷贝一个对象,而且父类属性也需要拷贝。.很多人可能会说直接引用待拷贝的对象就可以了。但是这个方法支持了使用子类引用指象父类引用。以下是代码:/**
/** .........
[1]wireless domain亦称 wireless region
来源: 互联网 发布时间: 2013-11-10
关于wireless region的相关相关介绍如下图所示,由于其限制的不仅仅是波段频率,还有其他的一些参数,所以请设置AP与您的STA在一个Region,否则会出现连不上的问题,抓包也很难抓到。
你可以从下面的链接获取802.11的最新Spec
http://standards.ieee.org/about/get/802/802.11.html
作者:qianguozheng 发表于2013-1-8 21:45:01 原文链接
阅读:47 评论:0 查看评论
[2]协调多个对象之间的交互——中介者模式(三)
来源: 互联网 发布时间: 2013-11-10
20.3 完整解决方案
为了协调界面组件对象之间的复杂交互关系,Sunny公司开发人员使用中介者模式来设计客户信息管理窗口,其结构示意图如图20-7所示:
图20-7 引入了中介者类的“客户信息管理窗口”结构示意图
图20-7只是一个重构之后的结构示意图,在具体实现时,为了确保系统具有更好的灵活性和可扩展性,我们需要定义抽象中介者和抽象组件类,其中抽象组件类是所有具体组件类的公共父类,完整类图如图20-8所示:
图20-8 重构后的“客户信息管理窗口”结构图
在图20-8中,Component充当抽象同事类,Button、List、ComboBox和TextBox充当具体同事类,Mediator充当抽象中介者类,ConcreteMediator充当具体中介者类,ConcreteMediator维持了对具体同事类的引用,为了简化ConcreteMediator类的代码,我们在其中只定义了一个Button对象和一个TextBox对象。完整代码如下所示:
//抽象中介者 abstract class Mediator { public abstract void componentChanged(Component c); } //具体中介者 class ConcreteMediator extends Mediator { //维持对各个同事对象的引用 public Button addButton; public List list; public TextBox userNameTextBox; public ComboBox cb; //封装同事对象之间的交互 public void componentChanged(Component c) { //单击按钮 if(c == addButton) { System.out.println("--单击增加按钮--"); list.update(); cb.update(); userNameTextBox.update(); } //从列表框选择客户 else if(c == list) { System.out.println("--从列表框选择客户--"); cb.select(); userNameTextBox.setText(); } //从组合框选择客户 else if(c == cb) { System.out.println("--从组合框选择客户--"); cb.select(); userNameTextBox.setText(); } } } //抽象组件类:抽象同事类 abstract class Component { protected Mediator mediator; public void setMediator(Mediator mediator) { this.mediator = mediator; } //转发调用 public void changed() { mediator.componentChanged(this); } public abstract void update(); } //按钮类:具体同事类 class Button extends Component { public void update() { //按钮不产生交互 } } //列表框类:具体同事类 class List extends Component { public void update() { System.out.println("列表框增加一项:张无忌。"); } public void select() { System.out.println("列表框选中项:小龙女。"); } } //组合框类:具体同事类 class ComboBox extends Component { public void update() { System.out.println("组合框增加一项:张无忌。"); } public void select() { System.out.println("组合框选中项:小龙女。"); } } //文本框类:具体同事类 class TextBox extends Component { public void update() { System.out.println("客户信息增加成功后文本框清空。"); } public void setText() { System.out.println("文本框显示:小龙女。"); } }
编写如下客户端测试代码:
class Client { public static void main(String args[]) { //定义中介者对象 ConcreteMediator mediator; mediator = new ConcreteMediator(); //定义同事对象 Button addBT = new Button(); List list = new List(); ComboBox cb = new ComboBox(); TextBox userNameTB = new TextBox(); addBT.setMediator(mediator); list.setMediator(mediator); cb.setMediator(mediator); userNameTB.setMediator(mediator); mediator.addButton = addBT; mediator.list = list; mediator.cb = cb; mediator.userNameTextBox = userNameTB; addBT.changed(); System.out.println("-----------------------------"); list.changed(); } }
编译并运行程序,输出结果如下:
--单击增加按钮--
列表框增加一项:张无忌。
组合框增加一项:张无忌。
客户信息增加成功后文本框清空。
-----------------------------
--从列表框选择客户--
组合框选中项:小龙女。
文本框显示:小龙女。
【作者:刘伟 http://blog.csdn.net/lovelion】
作者:LoveLion 发表于2013-1-8 21:38:28 原文链接
阅读:55 评论:0 查看评论
[3](JAVA子类引用指象父类引用)JAVA克隆对象,包括父类属性,无需实现序列化接口
最近做一个东西,需要拷贝一个对象,而且父类属性也需要拷贝。.很多人可能会说直接引用待拷贝的对象就可以了。但是这个方法支持了使用子类引用指象父类引用。以下是代码:/**
/** 将sourceObj的属性拷贝到targetObj * @param sourceObj * @param targetObj * @param clazz 从哪一个类开始(比如sourceObj对象层级为:Object->User->ChineseUser->ChineseMan->ChineseChongQingMan) * 如果需要从ChineseUser开始复制,clazz就指定为ChineseUser.class */ public static void cpoyObjAttr(Object sourceObj,Object targetObj, Class<?> clazz)throws Exception{ if(sourceObj==null || targetObj==null){ throw new Exception("源对象和目标对象不能为null"); } Field[] fields=clazz.getDeclaredFields(); for(int i = 0; i < fields.length; i++){ fields[i].setAccessible(true); Object sourceValue=fields[i].get(sourceObj); fields[i].set(targetObj,sourceValue ); } if(clazz.getSuperclass()==Object.class){ return; } cpoyObjAttr(sourceObj,targetObj,clazz.getSuperclass()); }
以下是单元测试:
@Test public void cpoyObjAttrTtest(){ ChineseMan chineseMan=new ChineseMan(); chineseMan.setUserName("程序员"); chineseMan.setCat(new Cat("tom")); try { ChineseManExtend chineseManExtend=new ChineseManExtend(); ObjectTool.cpoyObjAttr(chineseMan, chineseManExtend, chineseMan.getClass()); System.out.println(chineseManExtend.getUserName()); System.out.println(chineseManExtend.getCat().getCatName()); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }
已有 0 人发表留言,猛击->>这里<<-参与讨论
ITeye推荐
- —软件人才免语言低担保 赴美带薪读研!—
最新技术文章: