Java设计模式综合运用.docx
- 文档编号:1335099
- 上传时间:2022-10-20
- 格式:DOCX
- 页数:6
- 大小:16.04KB
Java设计模式综合运用.docx
《Java设计模式综合运用.docx》由会员分享,可在线阅读,更多相关《Java设计模式综合运用.docx(6页珍藏版)》请在冰豆网上搜索。
Java设计模式综合运用
Jv设计模式综合运用
实验报告
课程:
Jv设计模式学期:
20XX-20XX学年第2学期任课教腾剑锋
专业:
软件外包学号:
20XX07030103姓名:
吴国兴成绩:
实验大作业
1.题目:
完成一个综合项目程序,其中使用所学设计模式两个或者两个以上。
要求在该文档中首先给出项目程序完成的功能或者解决的问题,然后画出UML图,说明模式使用的具体情况,即角色和相应程序代码。
2.UML类图:
3.程序源代码:
1.
pckgelsu.egg.sy1;
publicclssCircle{
privteintx;
privteinty;
Circle(intx,inty){
this.x=x;
this.y=y;
}
publicintgetX(){
returnx;
}
publicvoidsetX(intx){
this.x=x;
}
publicintgetY(){
returny;
}
publicvoidsetY(inty){
this.y=y;
}
}
2.
pckgelsu.egg.sy1;
importjvx.swing.JPnel;
publicinterfceCommnd{
publicvoidexcute(JPneljpnel,Circlecircle);
publicvoidundo(JPneljpnel);
}
3.
pckgelsu.egg.sy1;
importjv.util.rryList;
importjvx.swing.JPnel;
publicclssConcreteCommndimplementsCommnd{
privteReceiverreceiver;
privterryListrrylist;
privteConcreteOfInvokerconcreteofinvoker;
ConcreteCommnd(Receiverreceiver,ConcreteOfInvokerconcreteofinvoker){
this.receiver=receiver;
this.rrylist=newrryList();
this.concreteofinvoker=concreteofinvoker;
}
@Override
publicvoidexcute(JPneljpnel,Circlecircle){
receiver.ddSpot(jpnel,circle);
rrylist.dd(circle);
}
@Override
publicvoidundo(JPneljpnel){
Circlecircle;
if(rrylist.size()>=1)
{
circle=rrylist.get(rrylist.size()-1);
receiver.deleteSpotr(jpnel,circle);
rrylist.remove(rrylist.size()-1);
intn=2;
concreteofinvoker.notifyObservers(n,circle.getX(),circle.getY());
}
}
}
4.pckgelsu.egg.sy1;
importjvx.swing.JLbel;
@SuppressWrnings("seril")
publicclssConcreteObserver1extendsJLbelimplementsObserver{
ConcreteObserver1(){
super("新增圆点位于:
(0,0)");
}
@Override
publicvoidupdte(intn,intx,inty){
if(n==1)
{
this.setText("新增圆点位于:
("+x+","+y+")");
}
elseif(n==2)
{
this.setText("删除圆点位于:
("+x+","+y+")");
}
}
}
5.pckgelsu.egg.sy1;
importjvx.swing.JLbel;
@SuppressWrnings("seril")
publicclssConcreteObserver2extendsJLbelimplementsObserver{
@Override
publicvoidupdte(intn,intx,inty){
this.setText("鼠标位于:
("+x+","+y+")");
}
}
6.
pckgelsu.egg.sy1;
publicinterfceConcreteOfInvoker{
publicvoidnotifyObservers(intn,intx,inty);
}
7.
pckgelsu.egg.sy1;
importjv.util.rryList;
publicclssConcreteSubjectimplementsConcreteOfInvoker,Subject{rryListrrylist;
ConcreteSubject(){
rrylist=newrryList();
}
@Override
publicvoidddObserver(Observerobserver){rrylist.dd(observer);
}
@Override
publicvoiddeleteObserver(Observerobserver){rrylist.remove(observer);
}
@Override
publicvoidnotifyObservers(intn,intx,inty){
for(Observerobserver:
rrylist)
{
observer.updte(n,x,y);
}
}
}
8.
pckgelsu.egg.sy1;
importjv.wt.event.MouseEvent;
importjv.wt.event.MouseListener;
importjv.wt.event.MouseMotionListener;
importjvx.swing.JPnel;
@SuppressWrnings("seril")
publicclssInvokerextendsJPnel{
privteCommndcommnd;
privteConcreteOfInvokerconcreteofinvoker;
Invoker(Commndcommnd,ConcreteOfInvokerconcreteofinvoker){
XX:
//.docsj/doc/7c6f87d8ee06eff9ff8079d.htmlmnd=commnd;
this.concreteofinvoker=concreteofinvoker;
this.ddMouseListener(newMouse());
this.ddMouseMotionListener(newMouseMotion());
}
clssMouseimplementsMouseListener{
@Override
publicvoidmouseClicked(MouseEventrg0){
excuteCommnd(rg0);
}
@Override
publicvoidmouseEntered(MouseEventrg0){//TODO自动生成的方法存根
}
@Override
publicvoidmouseExited(MouseEventrg0){
//TODO自动生成的方法存根
}
@Override
publicvoidmousePressed(MouseEventrg0){//TODO自动生成的方法存根
}
@Override
publicvoidmouseRelesed(MouseEventrg0){//TODO自动生成的方法存根
}
}
clssMouseMotionimplementsMouseMotionListener{
@Override
publicvoidmouseDrgged(MouseEventrg0){
//TODO自动生成的方法存根
}
@Override
publicvoidmouseMoved(MouseEventrg0){
intn=0;
concreteofinvoker.notifyObservers(n,rg0.getX(),rg0.getY());
}
}
publicvoidexcuteCommnd(MouseEventmouseevent){
intx=mouseevent.getX();
inty=mouseevent.getY();
Circlecircle=newCircle(x,y);
if(mouseevent.getButton()==MouseEvent.BUTTON1)
{
XX:
//.docsj/doc/7c6f87d8ee06eff9ff8079d.htmlmnd.excute(this,circle);
intn=1;
concreteofinvoker.notifyObservers(n,mouseevent.getX(),mouseevent.getY());
}
elseif(mouseevent.getButton()==MouseEvent.BUTTON3)
{
XX:
//.docsj/doc/7c6f87d8ee06eff9ff8079d.htmlmnd.undo(this);
}
}
}
9.
pckgelsu.egg.sy1;
publicinterfceObserver{
publicvoidupdte(intn,intx,inty);}
10.
pckgelsu.egg.sy1;
importjv.wt.Color;
importjv.wt.Grphics2D;
importjv.wt.S
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 设计 模式 综合 运用