一、回顾
1、Math类:静态方法,数学中的一些公式。
max(a,b),min(a,b),ceil(参数)得到大于参数的最小整数,floor(参数)得到小于参数的最大整数,pow(a,b)取得a的b次幂,round(参数)四舍五入的取整,abs(参数)绝对值,sqrt()平方根等等。
2、Random类,随机类,可以产生float,double,int,boolean,指定范围的随机数。
创建对象:
2-1、Random random=new Random();以当前系统时间作为种子
2-2、Random random=new Random(seed);seed是long型的
产生随机数字的语法:
random.nextXXX();
random.nextInt(value);0~(value-1)
3、第九章:自学
4、UML:统一建模语言,用来构建模型。
用例图:
用例:也就是系统所提供的功能。
参与者:是存在于系统外部,和系统发生交互的人或系统。
用例规约:是对于相关用例具体实现详细过程,说明文档。
类图:
类的表达:矩形三层结构,最上层类名,中间属性,最底层方法。
类之间的关系:
泛化:也就是继承
实现:就是实现接口
依赖:引用时,引用方依赖被引用方
关联:组合、聚合
一对多,多对一,一对一
5、设计模式:是一套行之有效的,被多数人知晓的,解决相应模式问题的一般方法。
5-1、开放封闭原则:尽量增加新的类,而不要去修改原来的类。
5-2、单一职责原则:引起类的职责变化的原因尽量单一。
5-3、里氏替换原则:父类可以引用子类对象。
5-4、依赖倒置原则:抽象不依赖细节,细节应该依赖于抽象。
5-5、接口隔离原则:一个接口中的方法要尽量单一。
5-6、简单工厂模式:
工厂角色:生产产品。
抽象产品:是所有产品的抽象类。
具体产品:是抽象产品的实现类。
通过具体的参数,来得到相应具体产品。
需要用户具体了解产品的信息。
二、今天的内容
1、单例模式:当需要某种类型的对象是唯一的。
要求:
构造方法能公有吗?只能是私有的!
类对象的产生需要该类自己提供方式。
方法语法:
public class ChiarMan{
private static ChiarMan xi;
private ChiarMan(){
}
public static ChiarMan getInstance(){
if(xi==null){
xi=new ChiarMan();
}
return xi;
}
}
题目:编写程序,实现对国家主席的一种模拟,要求主席只能有一个。
编写测试类,自己编写业务,可以感受到只能有一个主席。
2、观察者模式:
发布者接口:
发布方:
订阅方:
订阅者接口:
题目:编写程序,实现报社和订报者业务。能够用到观察者模式。
编写测试类,自己编写业务。
3、开发项目的步骤(MVC):
3-1、创建项目
3-2、创建包,分别存放不同的类
视图包:
视图的抽象父类:
public abstract class View{
//创建一个用于暂存数据的集合,用来传递信息保存信息
private HashMap map=new HashMap();
public void setMap(HashMap map){
this.map=map;
}
public HashMap getMap(){
return this.map;
}
//显示信息
public abstract View show();
//可能获取用户的信息
//转发请求
}
控制器包
控制器类:
public abstract class Controller{
//创建一个用于暂存数据的集合,用来传递信息保存信息
private HashMap map=new HashMap();
public void setMap(HashMap map){
this.map=map;
}
public HashMap getMap(){
return this.map;
}
//接收视图的请求,转发请求
//负责调度模型对象处理请求
//确定一下一个视图
public abstract View handle(View view);
}
模型包
模型对象:都是负责某种业务的功能实现类
定义模型接口
定义模型类
实体类:
抽象出相关的类型,系统中所要表达的类型。
public class Student{
}
public class User{
}
3-3、创建数据存储文件