软件设计与体系结构编程题汇总
创始人
2024-04-13 19:44:19
  1. 现在需要开发一款游戏软件,请以单例模式来设计其中的 Boss 角色。角色的属性和动作可以任意设计。 要求:该 Boss 类可以在多线程中使用。( 8 分)
    在这里插入图片描述
Public class Boss{Private static Boss instance; //(2 分)Private Boss(){ }//(2 分)Public static Boss getInstance(){ // ( 2 分)If(instance == null){Synchronized(Boss.Class){ // ( synchronized 关键字, 2 分)If(instance == null)Instance = new Boss();}}return instance;}
}

或者

Public class Boss{Private static Boss instance = new Boss();//(4 分)Private Boss(){}// ( 2 分)Public static Boss getInstance(){//2 分Return instance;}
}
  1. 一个农场公司,专门负责培育各种水果,有葡萄,草莓和苹果,请使用工厂方法,编写工厂类和主程序,并在主程序中来完成草莓生长状态的描述。( 8 分)

    在这里插入图片描述

    Public interface Factory{Fruit build();
    }
    Public class AppleFactory implements Factory{Public Fruit build(){Return new Apple();}
    }
    Public class GrapeFactory implements Factory{Public Fruit build(){Return new Grape();}
    }
    Public class StrawberryFactory implements Factory{Public Fruit build(){Return new Strawberry();}
    }
    Public class MainUI{ Public static void main(string[] str){Factory fac = new StrawberryFactory();Fruit ft = fac.build();ft.plant();Ft.grow();Ft.harvest();}
    }
    
  2. 给定如图所示的树形结构,请应用组合模式,在客户端完成数据的展示。具体要求如下:
    绘制组合模式的类图。( 4 分)
    编写简单元素和复杂元素的代码。( 4 分)
    在这里插入图片描述
    在客户端构造出树形数据并输出。( 4 分)
    提示:程序运行后,输出信息应为

    Root
    Leaf A
    Comp B
    Leaf BX
    Leaf BY
    Leaf C
    
    1. 类图,类名不限,但必须将抽象的概念,以及Composite和Component之间的关系用正确的连线表示。(4分)
      在这里插入图片描述
      2) 简单元素、复杂元素(4分):
    class Leaf implements Component{String name;public Leaf(String name){this.name = name; }public void display(){System.out.println( name);}public void add(Component c){}public void remove(Component c){}
    }  
    class Composite implements Component{String name;ArrayList list = new ArrayList();public Composite(String name){this.name = name; }public void display(){System.out.println(name);for(int i = 0 ; i < list.size() ;i ++){list.get(i).display();}  }public void add(Component c){list.add(c);  }public void remove(Component c){list.remove(c);}
    }
    

    客户端( 4 分):

    public class Test {public static void main(String[] args){Component root = new Composite("Root");root.add(new Leaf("Leaf A"));    Component comp = new Composite("Comp B");root.add(comp);    comp.add(new Leaf("Leaf BX"));comp.add(new Leaf("Leaf BY"));    root.add(new Leaf("Leaf C"));    root.display();    }}
    
  3. 迭代器模式: 提供一种方法来访问聚合对象,而不用暴露这个对象的内部表示,其别名为游标 (Cursor) 。
    在这里插入图片描述

CustomerManager 类
public   class   CustomerManager  {private  ArrayList  list  =  new  ArrayList();public   void  add(String str) {list .add(str);  }protected  ArrayList getList() {return   list ;  }public  Itertator getASItertator() {return   new  AscIterator( this );  }public  Itertator getCharItertator(String s) {return   new  CharIterator( this , s);  }}
Itertator 类
public   abstract   class   Itertator  
{   public   abstract   boolean  hasNext();public   abstract  String next();}
AscIterator 类
public   class   AscIterator   extends  Itertator {ArrayList  list  =  new  ArrayList();Iterator   iter ;public  AscIterator(CustomerManager cm) {ArrayList ls = cm.getList();for  (String s : ls) {list .add(s);Collections. sort ( list );iter  =  list .iterator();    }  }public   boolean  hasNext() {return   iter .hasNext();  }public  String next() {return  (String)  iter .next();  }}
CharIterator 类
public   class   CharIterator   extends  Itertator {ArrayList  list  =  new  ArrayList();Iterator   iter ;public  CharIterator(CustomerManager cm, String str) {ArrayList ls = cm.getList();for  (String s : ls) {if  (s.startsWith(str)) {list .add(s);      }iter  =  list .iterator();    }  }public   boolean  hasNext() {return   iter .hasNext();}public  String next() {return  (String)  iter .next();  }}
主类
public   class  Client {public   static   void  main(String[] args) {CustomerManager cm= new  CustomerManager();cm.add( "zhangsan" );cm.add( "lisi" );cm.add( "brown" );cm.add( "alien" );Itertator iter;iter=cm.getCharItertator( "a" );while (iter.hasNext()){String str=iter.next();System. out .println(str);    }  }}

相关内容

热门资讯

北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
tag是什么意思 tab是什么... 一、B端基础控件的认识控件一词,直译的话可以翻译成 “用来控制的元件”,是我们对 B 端系统进行信息...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
tag是什么意思 tab是什么... 一、B端基础控件的认识控件一词,直译的话可以翻译成 “用来控制的元件”,是我们对 B 端系统进行信息...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...