软件工程概述及设计模式概要.ppt
文本预览下载声明
个抽象工厂对应一个抽象产品,一个具体工厂对应一个具体产品,这个具体的工厂就负责生产对应的产品 * * 对象的适配器模式使用组合,而类的适配器模式使用继承 * * B * 性能优于:Object类的clone方法是一个本地方法,它直接操作内存中的二进制流 原型模式单例模式是冲突的。 Java的堆是一个运行时数据区,堆内存用来存放由new创建的对象和数组。堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小。 栈的优势是,存取速度比堆要快,仅次于寄存器,栈数据可以共享。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。栈中主要存放一些基本类 型的变量(,int, short, long, byte, float, double, boolean, char)和对象引用。 从软件设计的角度看,栈代表了处理逻辑,而堆代表了数据。 heap堆:用来存放new出来的东西 stack栈:局部变量,对象引用。 静态区:静态变量,字符串常量。 代码区:存放代码 Java的堆是一个运行时数据区,堆内存用来存放由new创建的对象和数组。堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小。 栈的优势是,存取速度比堆要快,仅次于寄存器,栈数据可以共享。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。栈中主要存放一些基本类 型的变量(,int, short, long, byte, float, double, boolean, char)和对象句柄。 从软件设计的角度看,栈代表了处理逻辑,而堆代表了数据。 heap堆:用来存放new出来的东西 stack栈:局部变量,对象引用。 静态区:静态变量,字符串常量。 代码区:存放代码 产品类:一般是一个较为复杂的对象,也就是说创建对象的过程比较复杂,一般会有比较多的代码量。在本类图中,产品类是一个具体的类,而非抽象类。实际编程中,产品类可以是由一个抽象类与它的不同实现组成,也可以是由多个抽象类与他们的实现组成。 抽象建造者:引入抽象建造者的目的,是为了将建造的具体过程交与它的子类来实现。这样更容易扩展。一般至少会有两个抽象方法,一个用来建造产品,一个是用来返回产品。 建造者:实现抽象类的所有未实现的方法,具体来说一般是两项任务:组建产品;返回组建好的产品。 导演类:负责调用适当的建造者来组建产品,导演类一般不与产品类发生依赖关系,与导演类直接交互的是建造者类。一般来说,导演类被用来封装程序中易变的部分。 1.当用户在视图上做任何需要调用模型的操作时,它的请求将被控制器截获。 2.控制器按照自身指定的策略,将用户行为翻译成模型操作,调用模型相应逻辑实现。 3.控制器可能会在接到视图操作时,指定视图做某些改变。 4.当模型的状态发生改变时,将通过某种方式通知视图。 5.视图可以从模型获取状态,从而改变自己的显示。 2012年下半年 2011年上半年 C 2011年上半年 2012年下半年D C A 2012年下半年 2012年上半年 A 2011年上半年 A D 2012年上半年 C D A 2013上半年 3个 2.3.9 原型模式(Prototype ) 原型模式(创建类模式) : ? 核心是:Prototype类,此类满足需满足两个条件: 1)实现Cloneable接口; 2)重写Object类中的clone方法 pubilc interface Cloneable{} 2.3.9 原型模式(Prototype ) 原型模式(创建类模式) : ? 优势: 1)创建对象性能优于new一个对象; 2)简化对象的创建; 问题: 直接在内存中复制数据,因此不会调用到类的构造方法。 不但构造方法中的代码不会执行,甚至连访问权限都对原型模式无效。 应用场景:在需要重复地创建相似对象时可以考虑使用原型模式 Eg:复制、粘贴 2.3.12 原型模式 Person?p?=?new?Person(23,?zhang);?? Person?p1?=?p;?? ?? System.out.println(p);?? System.out.println(p1);? 问题: 堆内存? 栈内存? 静态区? 代码区? String s = abc String s = new String(“abc”);?? 2.3.12 原型模式 Person?p?=?new?Person(23,?zhang);?? Person?p1?=?(Person)?p.clone();?? ?? System.out.println(p);?? System.out.println(p1);?? ? 2.3.12 原型模式 总结:当克隆的对象只有基本类型
显示全部