欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    软件案例分析课件.ppt

    • 资源ID:2163884       资源大小:450KB        全文页数:50页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    软件案例分析课件.ppt

    创建模式,创建模式综述,简单工厂(Simple Factory)工厂方法(Factory Method)抽象工厂模式(Abstract Factory)建造模式(Builder)原型模式(Prototype),1 简单工厂(Simple Factory),又称为静态工厂方法(Static Factory Method);由一个工厂对象决定创建出哪一种产品类的实例;所有产品实现同一个接口。,1.2 简单工厂方法类图,1.3 示例,1.4 简单工厂方法代码,public class ImgProcessorFactory public static ImgProcessor createImgProcessor(String format)if(format.equals(“jpg”)return new MyProcessor();else if(format.equals(“bmp”)return new BmpProcessor.,public Interface ImgProcessor public byte resizeImg(byte data);public class JpgProcessor implements ImgProcessor public byte resizeImg(byte data).,1.5 简单工厂方法代码续,1.6简单工厂方法的简化实现,1.7示例,1.8 简单工厂简化实现的另一个例子,1.9简单工厂方法优点,类工厂集中了所有的创建逻辑;可以在不修改客户端的情况下加入新类。,1.10简单工厂方法缺点,创建逻辑比较复杂;使用静态方法作为构建方法,无法继承;引入新产品的时候必须修改工厂类。,1.11简单工厂方法的作用,是所有构建模式的基础;将构建部分代码适当修改后,可将对象循环使用。,2 工厂方法,工厂类有若干个,实现了同样一个工厂接口。每个工厂类可以创建一类具体的产品。,2 工厂方法,2.1 工厂方法的一个例子,2.2 工厂方法部分代码,public class BmpFactory public BmpFactory()public ImageProcessor createProcessor()return new BmpProcessor();,2.3 工厂方法在java中的一个例子,public interface Collection.Iterator iterator();public abstract class AbstractList extends AbstractCollection implements List.Iterator iterator()/代码实现部分,3 抽象工厂模式(Abstract Factory),3.2 抽象工厂方法的一个例子,3.3 抽象工厂方法特点,可以一次增加一个产品族增加一个产品族必须增加一产品类,4 单例模式,每个类只有一个实例。类的构造函数是私有的。类使用一个静态属性保存自己的实例。,public class SingleInstance private static SingleInstance singleInstance;private SingleInstance()public synchronized static SingleInstance getInstance()if(bmpProcessor=null)singleInstance=new SingleInstance();return singleInstance;,4.2 单例模式的一种实现方法,public class SingleInstance private static SingleInstance singleInstance;private SingleInstance()static singleInstance=new SingleInstance();,4.3 单例模式的另外一种实现方法,4.4 抽象工厂方法第三种实现public class SingleInstance private static Map allInstance=newHashMap();private SingleInstance()public static synchronzied MyInterface getInstance(String name)Object obj=allInstance.get(name);if(obj=null)obj=Class.forName(name).newInstance();allInstance.put(name,obj);return(MyInterface)obj;,4.5 什么情况下使用单例模式,系统只需要一个实例;对于工具类,最好使用单例模式,而不是静态方法;对于数据库连接,更不能使用单例模式。,4.6 单例的状态,有状态类,用来记录系统当前状态。无状态类,一个设置为不变类(Immutable).例如工具类。,4.7 单例模式的例子,java的RunTime对象RunTime.getRuntime();,4.8 多例模式,在多例模式中每个类有若干个实例。多例类必须自己创建、管理自己的实例,并向外界提供自己的实例。类使用几个或者是一个collection属性保存实例。,public class Die private static Die dice=new Die6;static for(int i=1;i=6;i+)dicei=new Die(i);private int value;private Die(int value)this.value=value;,4.9 多例模式示例,4.10 多例模式示例续,public int getValue()return value;public Die getDie(int value)if(value6)throw new llegalArgumentException(invalid value:+value);return dicevalue;,4.11多例模式示例public class Resource private static Map resources=new HashMap();private Resouce(Locale locale).public Resource getResouce(Locale locale)Object obj=resources.get(locale);if(obj=null)obj=new Resouce(locale);resources.put(locale,obj);return(Resource)obj;,4.12 序列问题的单例解决方案,public class MySeq private mySeq;private MySeq()public synchronzied static MySeq getMySeq()if(mySeq=null)mySeq=new MySeq;,4.13 序列问题的单例解决方案,private Map map=new HashMap();public synchronzied int getNextVal(String seq)if(map.get(seq)!=null)else 从数据库中读入到map中 int newValue=map.get(seq).intValue()+1;将newValue存入数据库。map.put(seq,new Integer(newValue);return newValue;,4.14 序列问题多例解决方案,public class MySeq private static Map map=new HashMap();private String seqName;private MySeq(String seqName)this.seqName=seqName;public synchronzied static getMySeq(String seq)map中存在则返回,否则构建.,4.15 序列问题多例解决方案续,int curValue=-1;public synchronzied int getNextVal()if(curValue=-1)从数据库中读入到curValue中curValue+;将curValue存入数据库;return curValue;,5 建造模式(Builder),5.2 建造模式的一个例子,5.3 构建模式的另一个例子,5.4 构建模式同抽象工厂模式的区别,6 原型模式,通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个对象类型的方法来创造出更多的同类对象。java中Object.clone(),6.1 原型模式1 简单形式的原型,实现Object.clone()方法,6.2 原型模式2-登记形式的原型模式,在一个类中登记要复制的原型类型,6.3 关于深复制和浅复制,6.4浅复制,被复制对象都含有原来对象相同的值,而所有的对其他对象的引用都仍然指向原来的对象。,6.5 浅复制的一个例子,public Myclass private MyAtt att;private int width;.public Myclass lowClone()MyClass myClass=new MyClass;myClass.setWidth(this.width);myClass.setMyAtt(this.att);return myClass;,6.6 深复制,被复制对象所有变量都含有同原来对象相同的值,除去那些引用其他对象的变量。那些引用其他对象的变量都指向被复制过的新对象。,6.7深复制的一个例子,public Myclass private MyAtt att;private int width;.public deepClone()MyClass myClass=new MyClass;myClass.setWidth(this.width);myClass.setMyAtt(this.att.deepClone();,6.8 深复制的另外实现方法,public MyClass deepClone().ObjectOutputStream out=new ObjectOutputStream(.);out.writeObject(this);ObjectInputStream in=new ObjectInputStream(.);Myclass temp=(MyClass)in.readObject();return temp;,6.9 使用ObjectInput(output)Stream注意事项,JDK版本必须严格一致注意transient 关键字,

    注意事项

    本文(软件案例分析课件.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开