当前位置: 编程技术>综合
本页文章导读:
▪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推荐
- —软件人才免语言低担保 赴美带薪读研!—
最新技术文章: