码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式

时间:2017-08-26 18:40:57      阅读:113      评论:0      收藏:0      [点我收藏+]

标签:table   led   idt   student   bsp   null   stat   学生   question   

设计模式:

23种设计模式     单例设计模式    工厂设计模式    装饰者模式    生产者模式

单例设计模式三步走:

1.构造方法私有化(目的:不能在外部通过new随意创建对象)

2.在类内部创建对象,作为私有静态属性

3.对外提供公有静态的get方法

饿汉模式

//当做属性去

  private static SingleDemo sd=new SingleDemo();

  private SingleDemo(){

    

  }

  //返回singleDemo对象

  public static SingleDemo getSingleDemo(){

     return SingleDemo.sd;

  }

 

懒汉模式

//当做属性去

  private static SingleDemo sd;

  private SingleDemo(){

    

  }

  //返回singleDemo对象

  public static SingleDemo getSingleDemo(){

     if(sd==null){

       sd=new SingleDemo();

     }   

     return sd;

  }

 

单例设计模式综合练习:

 

设计一个单例模式的选题器

设计一个老师类和学生类

学生类登录进入考试系统

首先选题器从总题库中选择一些题进入考试题库

学生利用考试题库进行答题考试

考试完成后学生将填满答案的“试卷”交给教师进行评分,

当方法的返回值类型和参数列表为自定义类型时:

特点:

优点:对象唯一,访问量过大时可以避免内存溢出

缺点:普通属性也变成唯一的

应用场景:

1


public class KaoShiTi {
//有一张试卷
public String[][] paper=new String[4][2];

}

2

public class Student {
//定义做题的方法
public String[] answer(KaoShiTi kst){
//拿到试卷
String[][] question=kst.paper;
String[] ans=new String[question.length];
Scanner sc=new Scanner(System.in);
for(int i=0;i<question.length;i++){
System.out.println(question[i][0]);
System.out.println("请回答:");
ans[i]=sc.nextLine();

}

return ans;
}

}

3

public class Teacher {
public int pi(KaoShiTi kst,String[] ans){
String[][] paper=kst.paper;
int score=0;
for(int i=0;i<paper.length;i++){
String answer=paper[i][1];
if(answer.equals(ans[i])){
score+=25;
}
}
return score;
}

}

4

public class XuanTiQi {
private static XuanTiQi xtq=new XuanTiQi();
private XuanTiQi(){

}
public static XuanTiQi getXuanTiQi(){
return XuanTiQi.xtq;
}
//从总题库中抽屉到考试题库
public KaoShiTi getQuestion(ZongTiKu ztk){
KaoShiTi kst=new KaoShiTi();
String[][] values01=ztk.questions;
String[][] values02=kst.paper;
for(int i=0;i<4;i++){
int index=(int)(Math.random()*values01.length);
values02[i]=values01[index];
}

return kst;
}

}

5


public class ZongTiKu {
//给题
public String[][] questions={{"1.今天吃饱了吗 \nA 饱了\n B 没有 \nC 不知道 \nD 你猜","A"},
{"2.今天吃饱了吗 \nA 饱了\n B 没有 \nC 不知道 \nD 你猜","D"},
{"3.今天吃饱了吗 \nA 饱了\n B 没有 \nC 不知道 \nD 你猜","B"},
{"4.今天吃饱了吗 \nA 饱了\n B 没有 \nC 不知道 \nD 你猜","C"},
{"5.今天吃饱了吗 \nA 饱了\n B 没有 \nC 不知道 \nD 你猜","A"},
{"6.今天吃饱了吗 \nA 饱了\n B 没有 \nC 不知道 \nD 你猜","B"},
{"7.今天吃饱了吗 \nA 饱了\n B 没有 \nC 不知道 \nD 你猜","D"},
{"8.今天吃饱了吗 \nA 饱了\n B 没有 \nC 不知道 \nD 你猜","A"}};

}

Test

public class Test {
public static void main(String[] args) {
Student st=new Student();
XuanTiQi xtq=XuanTiQi.getXuanTiQi();
ZongTiKu ztk=new ZongTiKu();
KaoShiTi kst=xtq.getQuestion(ztk);
String[] ans=st.answer(kst);
Teacher t=new Teacher();
int score=t.pi(kst, ans);
System.out.println(score);



}

}

设计模式

标签:table   led   idt   student   bsp   null   stat   学生   question   

原文地址:http://www.cnblogs.com/czwzzb/p/7435766.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!