
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;}
}
一个农场公司,专门负责培育各种水果,有葡萄,草莓和苹果,请使用工厂方法,编写工厂类和主程序,并在主程序中来完成草莓生长状态的描述。( 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();}
}
给定如图所示的树形结构,请应用组合模式,在客户端完成数据的展示。具体要求如下:
绘制组合模式的类图。( 4 分)
编写简单元素和复杂元素的代码。( 4 分)

在客户端构造出树形数据并输出。( 4 分)
提示:程序运行后,输出信息应为
Root
Leaf A
Comp B
Leaf BX
Leaf BY
Leaf C

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(); }}
迭代器模式: 提供一种方法来访问聚合对象,而不用暴露这个对象的内部表示,其别名为游标 (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); } }}
下一篇:形容愧疚的神态的词