社区
非技术区
帖子详情
求一个Command设计模式的程序例子以理解Command模式,例子越短越简单越好
Patrick_DK
2002-03-12 06:54:44
如题
...全文
137
4
打赏
收藏
求一个Command设计模式的程序例子以理解Command模式,例子越短越简单越好
如题
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Patrick_DK
2002-03-13
打赏
举报
回复
初级例子
----------------------------------
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class CommandPattern2
{
public static void main(String[] args)
{
JFrame jFrame=new JFrame("Command Pattern");
ExitJButton exitJButton=new ExitJButton("Exit");
PrintJButton printJButton=new PrintJButton("Print");
RunJButton runJButton=new RunJButton("Run");
CustomListener cl=new CustomListener();
exitJButton.addActionListener(cl);
printJButton.addActionListener(cl);
runJButton.addActionListener(cl);
jFrame.getContentPane().setLayout(new FlowLayout());
jFrame.getContentPane().add(exitJButton);
jFrame.getContentPane().add(printJButton);
jFrame.getContentPane().add(runJButton);
jFrame.setBounds(200,200,400,400);
jFrame.setVisible(true);
}
}
abstract interface Command
{
public abstract void execute();
}
class ExitJButton extends JButton implements Command
{
public ExitJButton(String label)
{
super(label);
}
public void execute()
{
System.out.println("exit event");
}
}
class PrintJButton extends JButton implements Command
{
public PrintJButton(String label)
{
super(label);
}
public void execute()
{
System.out.println("print event");
}
}
class RunJButton extends JButton implements Command
{
public RunJButton(String label)
{
super(label);
}
public void execute()
{
System.out.println("run event");
}
}
class CustomListener implements ActionListener
{
public void actionPerformed(ActionEvent ae)
{
Command cmd=(Command)ae.getSource();
cmd.execute();
}
}
aprim
2002-03-12
打赏
举报
回复
上面的代码都在exeute()中直接实现了,也可把操作提出到一个指定的CommandReceiver类中,实现真正的 发送者(sender)和接收者(receiver)完全解耦(decoupling)。。。
Patrick_DK
2002-03-12
打赏
举报
回复
to 楼上:
你说的四人帮那本是不是那本最有名的《设计模式》啊?
Design Pattern(Java版)我有,不过是英文的,主要内容太抽象了,可能不好懂,而且评价不是很高啊
你看过吗,能具体说说吗?
zhengqingshan
2002-03-12
打赏
举报
回复
这是我的理解:
public interface command{
public void execute()
}
比如你的程序有若干按钮:可能响应他们的actionperformed如下:
public void actionPerformed(ActionEvent e)
{object o=e.getSource()
if (o==bnt1) fileOpen();//关闭文件
if (o==bnt2) fileClose();
.....
这样的话,会暴露每个按钮各自的内部信息(比如,他们是用来干什么的),而且一堆判断语句也不好,如果这样:
public class closeButton extends JButton implements command{
public void execute(){
System.exit(0);
}
.............
把每一个按钮要干什么,写在他自己的类里
然后
closeButton b=new closeButton();
b.addActionListener(new listener());
public class listener implements actionListener{
public void actionPerformed(actionEvent e){
command o=(command)e.getSource();
o.exeute();/////这样,以后每一个实现了command接口的对象都可用这 //监听者,而且也不用知道关于事件的具体信息 // 比如是哪一个对象引发,从而决定具体要干什么
可以简化代码(只不过要多写几个实现command接口的类
}
建议看看design pattern(java版),例子简单,比四人帮那本容易理解的多
Asp.net
设计
模式
笔记之一:
理解
设计
模式
GOF
设计
模式
著作中的23种
设计
模式
可以分成三组:创建型(Creational),结构型(Structural),行为型(Behavioral)。下面来做详细的剖析。 创建型 创建型
模式
处理对象构造和引用。他们将对象实例的实例化责任从...
23个小案例带你吃透23种
设计
模式
模式
就是解决问题的固定套路,
设计
模式
(Design pattern)就是一套经过前人反复使用,总结出来的
程序
设计经验。
设计
模式
总共分为三大类:第一类是创建型
模式
、第二类是结构型
模式
、第三种是行为型
模式
,共计23种标准...
史上最详细的23中
设计
模式
解析,
一个
不落,理论搭配
简单
案例,更好
理解
哦
一、软件
设计
模式
的产生背景 “
设计
模式
”这个术语最初并不是出现在软件设计中,而是被用于建筑领域的设计中。 1977 年,美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任克里斯托夫·亚历山大...
深入
理解
设计
模式
:
设计
模式
定义、设计原则以及组织编目
深入
理解
设计
模式
,阐述
设计
模式
的定义以及在
设计
模式
中常使用的六大设计原则,并且给出
设计
模式
的具体分类
Command
设计
模式
声明:本套日志,纯属个人
理解
,欢迎各位架构高手不吝赐教!当然,咱都是搞技术的,磨嘴皮子的事,同行们就少点吧!! 看了很多
设计
模式
的书,还是什么其他的资料...基于此,就从
Command
设计
模式
开始吧!
Command
(命
非技术区
23,409
社区成员
70,517
社区内容
发帖
与我相关
我的任务
非技术区
Java 非技术区
复制链接
扫一扫
分享
社区描述
Java 非技术区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章