- 浏览: 249266 次
- 性别:
- 来自: 济南
文章分类
- 全部博客 (303)
- c (31)
- c++ (16)
- java (18)
- c# (1)
- python (3)
- java web (6)
- oracle (7)
- sqlserver (2)
- mysql (2)
- android (24)
- android系统 (15)
- android多媒体部分 (15)
- android游戏 (12)
- linux (26)
- javaScript (1)
- ajax (1)
- node JS (2)
- html (5)
- apache (3)
- jboss (1)
- weblogic (0)
- 通信协议 (10)
- 云计算 (1)
- 分布式 (5)
- ejb (1)
- webservice (5)
- 设计模式 (16)
- JNI (6)
- swing (13)
- 版本控制 (1)
- UML (1)
- xml (4)
- spring (5)
- hibernate (5)
- struts1 (3)
- struts2 (4)
- ibatis (0)
- tomcat (2)
- 心得体会 (1)
- css (1)
- 嵌入式 (41)
- arm体系结构 (10)
command命令设计模式
类似于callback的功能,就是将所有事件的处理方法归并到一起,客户端不需要知道
具体处理代码。这样在以command中代码发生变化时,客户端不需要作修改
示例代码如下:
/**
* 命令设计模式接口
*
* @time 下午09:36:40
* @author retacn yue
* @Email zhenhuayue@sina.com
*/
public interface Command {
public abstract void execute();
}
/**
* 执行方式一
* @time 下午09:38:22
* @author retacn yue
* @Email zhenhuayue@sina.com
*/
public class Engineer implements Command {
@Override
public void execute() {
}
}
/**
* 执行方式二
*
* @time 下午09:39:21
* @author retacn yue
* @Email zhenhuayue@sina.com
*/
public class Politician implements Command {
@Override
public void execute() {
}
}
/**
* 执行方式三
*
* @time 下午09:38:51
* @author retacn yue
* @Email zhenhuayue@sina.com
*/
public class Programmer implements Command {
@Override
public void execute() {
}
}
/**
* 测试命令设计模式
*
* @time 下午09:42:45
* @author retacn yue
* @Email zhenhuayue@sina.com
*/
@SuppressWarnings("rawtypes")
public class TestCommand {
public static void main(String[] args) {
List queue = Producer.procudeRequests();
for (Iterator iterator = queue.iterator(); iterator.hasNext();)
{
((Command) iterator.next()).execute();
}
}
}
java 的swing中的菜单都是使用command模式,android中的许多监听也类似
/**
* 菜单
*
* @time 10:24:50 AM
* @author retacn yue
* @Email zhenhuayue@sina.com
*/
public class Test_MentTest extends Frame {
private static final long serialVersionUID = 1L;
// 默认值
int n = 12;
String ko = "TimesRoman";
Color fColor = Color.red;
TextField textField = new TextField("TimeRoman");
/** ************************************************************* */
// 菜单工具条
MenuBar menuBar = new MenuBar();
// 菜单
Menu fontStyle = new Menu("字型"),//
fontSize = new Menu("字号"),//
fontColor = new Menu("颜色");//
// 菜单内容项
CheckboxMenuItem fStyle1 = new CheckboxMenuItem("TimesRoman"),//
fStyle2 = new CheckboxMenuItem("Courier"),//
fStyle3 = new CheckboxMenuItem("Helvetica"),//
fSize1 = new CheckboxMenuItem("10"),//
fSize2 = new CheckboxMenuItem("15"),//
fSize3 = new CheckboxMenuItem("20"),//
fColor1 = new CheckboxMenuItem("红色"),//
fColor2 = new CheckboxMenuItem("绿色"),//
fColor3 = new CheckboxMenuItem("蓝色");//
/** *****鼠标右键弹出菜单
************************************************** */
// 弹出式菜单
PopupMenu popupMenu = new PopupMenu();
// 弹出菜单项
MenuItem pp1, pp2, pp3;
/**
* 构造器
*/
private Test_MentTest() {
super("Test_MentTest");
setLayout(new FlowLayout()); // 流布局
setBackground(Color.orange);
// 添加菜单容项
fontStyle.add(fStyle1);
fontStyle.add(fStyle2);
fontStyle.add(fStyle3);
fontSize.add(fSize1);
fontSize.add(fSize2);
fontSize.add(fSize3);
fontColor.add(fColor1);
fontColor.add(fColor2);
fontColor.add(fColor3);
menuBar.add(fontStyle);
menuBar.add(fontSize);
menuBar.add(fontColor);
//
setMenuBar(menuBar);
popupMenu.add(pp1 = new MenuItem("灰色"));
pp1.addActionListener(new koActionListener());
popupMenu.add(pp2 = new MenuItem("青色"));
pp2.addActionListener(new koActionListener());
popupMenu.add(pp3 = new MenuItem("黄色"));
pp3.addActionListener(new koActionListener());
add(textField);
add(popupMenu);
// 设置鼠标事件
enableEvents(AWTEvent.MOUSE_EVENT_MASK);
// 初始化设置
fSize1.setState(true);
fColor1.setState(true);
setSize(200, 180);
setVisible(true);
addWindowListener(new koWindowListener());
// 菜单项添加监听
fStyle1.addItemListener(new koItemListener());
fStyle2.addItemListener(new koItemListener());
fStyle3.addItemListener(new koItemListener());
fSize1.addItemListener(new koItemListener());
fSize2.addItemListener(new koItemListener());
fSize3.addItemListener(new koItemListener());
fColor1.addItemListener(new koItemListener());
fColor2.addItemListener(new koItemListener());
fColor3.addItemListener(new koItemListener());
}
/**
* 应用入口
*
* @param args
*/
public static void main(String[] args) {
new Test_MentTest();
}
/**
* 自定义弹出菜单的单击监听
*/
class koActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
if (e.getSource() == pp1) {
textField.setBackground(Color.gray);
} else if (e.getSource() == pp2) {
textField.setBackground(Color.cyan);
} else if (e.getSource() == pp3) {
textField.setBackground(Color.yellow);
}
}
}
/**
* 自定义菜单选项监听
*/
class koItemListener implements ItemListener {
public void itemStateChanged(ItemEvent e) {
if (e.getItemSelectable() == fStyle1) {
ko = fStyle1.getLabel();
fStyle2.setState(false);
fStyle3.setState(false);
}
if (e.getItemSelectable() == fStyle2) {
ko = fStyle2.getLabel();
fStyle1.setState(false);
fStyle3.setState(false);
}
if (e.getItemSelectable() == fStyle3) {
ko = fStyle3.getLabel();
fStyle1.setState(false);
fStyle2.setState(false);
}
if (e.getItemSelectable() == fSize1) {
n = Integer.parseInt(fSize1.getLabel());
fSize2.setState(false);
fSize3.setState(false);
}
if (e.getItemSelectable() == fSize2) {
n = Integer.parseInt(fSize2.getLabel());
fSize1.setState(false);
fSize3.setState(false);
}
if (e.getItemSelectable() == fSize3) {
n = Integer.parseInt(fSize3.getLabel());
fSize1.setState(false);
fSize2.setState(false);
}
if (e.getItemSelectable() == fColor1) {
fColor = Color.red;
fColor2.setState(false);
fColor3.setState(false);
}
if (e.getItemSelectable() == fColor2) {
fColor = Color.green;
fColor1.setState(false);
fColor3.setState(false);
}
if (e.getItemSelectable() == fColor3) {
fColor = Color.blue;
fColor1.setState(false);
fColor2.setState(false);
}
textField.setFont(new Font(ko, Font.PLAIN, n));
textField.setForeground(fColor);
textField.setText(ko);
}
}
/**
* 鼠标响应事件
*/
@Override
protected void processMouseEvent(MouseEvent e) {
// 是否为此平台的鼠标弹出事件
if (e.isPopupTrigger()) {
popupMenu.show(e.getComponent(), e.getX(), e.getY());
}
}
}
/**
* 自定义关闭窗体监听
*/
class koWindowListener extends WindowAdapter {
@Override
public void windowClosing(WindowEvent e) {
// 释放资源
e.getWindow().dispose();
System.exit(0);
}
}
发表评论
-
java 设计模式学习笔记十六 chain of responsibility 职责链设计模式
2012-11-09 00:15 718chain of responsibility 职责链设计模式 ... -
java 设计模式学习笔记十五 strategy 策略设计模式
2012-11-02 21:22 671strategy 策略设计模式 定义一系列算法,把这些算 ... -
java 设计模式学习笔记一 singleton单例
2012-09-08 18:47 628保证在java程序中,一个class类只有一个实例存在 节省 ... -
java 设计模式学习笔记二 工厂模式Factory
2012-09-28 18:03 654工厂模式:factory 工厂模式就相当于创建实例对象的ne ... -
java 设计模式学习笔记三 Builder模式
2012-09-30 23:25 667设计模式 builder 将一个复杂的对象构建与他的表示分离 ... -
java 设计模式学习笔记四 prototype模式
2012-10-01 21:56 614prototype原型模式 用原型实例指定创建对象种类, ... -
java 设计模式学习笔记五Adapter适配器模式
2012-10-02 23:09 615adapter适配器模式 将两个不兼容的类纠合在一起,属于结 ... -
java 设计模式学习笔记六 proxy代理模式
2012-10-03 22:21 677proxy代理模式 为其他对象提供一种代理以控制对这个 ... -
java 设计模式学习笔记七 facade外观模式
2012-10-04 22:44 606facade外观设计模式 为子系统中的一组接口提供一个统一的 ... -
java 设计模式学习笔记八 composite组合模式
2012-10-05 21:38 715composite组合模式 将对象以树形式组织起来和chai ... -
java 设计模式学习笔记九 decorator装饰模式
2012-10-08 23:39 714decorator装饰模式 动态的给一个对象添加一些额外 ... -
java 设计模式学习笔记十 bridge桥模式
2012-10-18 22:04 756bridge桥模式 将抽象和行为划分开来,各自独立但能动态结 ... -
java 设计模式学习笔记十一flyweight享元设计模式
2012-10-19 21:37 594flyweight享元设计模式 避免拥有相同内容的小类的开销 ... -
java 设计模式学习笔记十三 observer设计者模式
2012-10-21 21:59 750observer设计者模式 示例代码如下: /** ... -
java 设计模式学习笔记十四 template模版模式
2012-10-25 21:54 578/** * 模版 * * @time 下午09:58:0 ...
相关推荐
Java设计模式学习笔记
总结了java开发中的21种设计模式,详解和例子,带书签的pdf格式,方便阅读!
学习Java设计模式的笔记,标注了其中重要的要点,如果有需要的小伙伴,自行下载哦
java设计模式的学习笔记,其中包含各种模式的代码实现
Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习...
图解java设计模式_学习笔记_java开发解压密码为twj123
设计模式学习笔记-命令模式
设计模式学习笔记,分析了GOF的23种模式和类设计的原则
韩顺平_Java设计模式笔记.docx
Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记
根据《JAVA与设计模式》整理的笔记及示例代码。
23中java设计模式结合生活中用例进行讲解以及spring源码中存在的设计模式才知道原来设计模式如此重要,视频教程链接如下:https://study.163.com/course/courseMain.htm?courseId=1209569921,或者直接在网易云搜索...
我收集的设计模式的学习笔记,采用pdf格式,便于收藏和查看
Java基础 java学习笔记 Java Java基础Markdown学习笔记,可转换成PDF、Word等格式
Java JDK 7学习笔记 PDF
各个模式都有详细的例子C#学习笔记,打开就知道了
该文档为java设计模式的整理笔记,有助于大家更详细了解java设计模式
HeadFirst设计模式学习笔记比较全面详细地讲解了13个设计模式,有利于大家更好的学习HeadFirst设计模式,希望亲们会喜欢~~~
Java 版设计模式学习笔记-java-design-patterns