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

    java几种常用设计模式简单示例 =.docx

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

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

    java几种常用设计模式简单示例 =.docx

    java几种常用设计模式简单示例 =java几种常用设计模式简单示例 设计模式Java 1.单例设计模式 所谓单例设计模式简单说就是无论程序如何运行,采用单例设计模式的类永远只会有一个实例化对象产生。具体实现步骤如下: (1) 将采用单例设计模式的类的构造方法私有化。 (2) 在其内部产生该类的实例化对象,并将其封装成private static类型。 (3) 定义一个静态方法返回该类的实例。 示例代码如下: Java代码 class Singleton private static Singleton instance = new Singleton;/ 在内部产生本类的实例化对象 public static Singleton getInstance / 通过静态方法返回instance对象 return instance; private Singleton / 将构造方法封装为私有化 public void print System.out.println("Hello World!"); public class SingletonDemo public static void main(String args) Singleton s1 = null; / 声明对象 Singleton s2 = null; / 声明对象 Singleton s3 = null; / 声明对象 s1 = Singleton.getInstance; / 取得实例化对象 s2 = Singleton.getInstance; / 取得实例化对象 s3 = Singleton.getInstance; / 取得实例化对象 s1.print; / 调用方法 s2.print; / 调用方法 s3.print; / 调用方法 java view plaincopyprint? class Singleton private static Singleton instance = new Singleton;/ 在内部产生本类的实例化对象 public static Singleton getInstance / 通过静态方法返回instance对象 return instance; private Singleton / 将构造方法封装为私有化 public void print System.out.println("Hello World!"); public class SingletonDemo public static void main(String args) Singleton s1 = null; / 声明对象 Singleton s2 = null; / 声明对象 Singleton s3 = null; / 声明对象 s1 = Singleton.getInstance; / 取得实例化对象 s2 = Singleton.getInstance; / 取得实例化对象 s3 = Singleton.getInstance; / 取得实例化对象 s1.print; / 调用方法 s2.print; / 调用方法 s3.print; / 调用方法 class Singleton private static Singleton instance = new Singleton;/ 在内部产生本类的实例化对象 public static Singleton getInstance / 通过静态方法返回instance对象 return instance; private Singleton / 将构造方法封装为私有化 public void print System.out.println("Hello World!"); public class SingletonDemo public static void main(String args) Singleton s1 = null; / 声明对象 Singleton s2 = null; / 声明对象 Singleton s3 = null; / 声明对象 s1 = Singleton.getInstance; / 取得实例化对象 s2 = Singleton.getInstance; / 取得实例化对象 s3 = Singleton.getInstance; / 取得实例化对象 s1.print; / 调用方法 s2.print; / 调用方法 s3.print; / 调用方法 一、单例模式的介绍 Singleton是一种创建型模式,指某个类采用Singleton模式,则在这个类被创建后,只可能产生一个实例供外部访问,并且提供一个全局的访问点 二、单例模式的实现 实现的方式有如下四种: Java代码 /* * * 单例模式的实现:饿汉式,线程安全 但效率比较低 */ public class SingletonTest private SingletonTest private static final SingletonTest instance = new SingletonTest; public static SingletonTest getInstancei return instance; java view plaincopyprint? /* * * 单例模式的实现:饿汉式,线程安全 但效率比较低 */ public class SingletonTest private SingletonTest private static final SingletonTest instance = new SingletonTest; public static SingletonTest getInstancei return instance; /* * * 单例模式的实现:饿汉式,线程安全 但效率比较低 */ public class SingletonTest private SingletonTest private static final SingletonTest instance = new SingletonTest; public static SingletonTest getInstancei return instance; Java代码 /* * 单例模式的实现:饱汉式,非线程安全 * */ public class SingletonTest private SingletonTest private static SingletonTest instance; public static SingletonTest getInstance if (instance = null) instance = new SingletonTest; return instance; java view plaincopyprint? /* * 单例模式的实现:饱汉式,非线程安全 * */ public class SingletonTest private SingletonTest private static SingletonTest instance; public static SingletonTest getInstance if (instance = null) instance = new SingletonTest; return instance; /* * 单例模式的实现:饱汉式,非线程安全 * */ public class SingletonTest private SingletonTest private static SingletonTest instance; public static SingletonTest getInstance if (instance = null) instance = new SingletonTest; return instance; Java代码 /* * 线程安全,但是效率非常低 * author vanceinfo * */ public class SingletonTest private SingletonTest private static SingletonTest instance; public static synchronized SingletonTest getInstance if (instance = null) instance = new SingletonTest; return instance; java view plaincopyprint? /* * 线程安全,但是效率非常低 * author vanceinfo * */ public class SingletonTest private SingletonTest private static SingletonTest instance; public static synchronized SingletonTest getInstance if (instance = null) instance = new SingletonTest; return instance; /* * 线程安全,但是效率非常低 * author vanceinfo * */ public class SingletonTest private SingletonTest private static SingletonTest instance; public static synchronized SingletonTest getInstance if (instance = null) instance = new SingletonTest; return instance; Java代码 /* * 线程安全 并且效率高 * */ public class SingletonTest private static SingletonTest instance; private SingletonTest public static SingletonTest getIstance if (instance = null) synchronized (SingletonTest.class) if (instance = null) instance = new SingletonTest; return instance; 2.工厂设计模式 程序在接口和子类之间加入了一个过渡端,通过此过渡端可以动态取得实现了共同接口的子类实例化对象。 示例代码如下: Java代码 interface Animal / 定义一个动物的接口 public void say; / 说话方法 class Cat implements Animal / 定义子类Cat Override public void say / 覆写say方法 System.out.println("我是猫咪,喵呜!"); class Dog implements Animal / 定义子类Dog Override public void say / 覆写say方法 System.out.println("我是小狗,汪汪!"); class Factory / 定义工厂类 public static Animal getInstance(String className) Animal a = null; / 定义接口对象 if ("Cat".equals(className) / 判断是哪个子类的标记 a = new Cat; / 通过Cat子类实例化接口 if ("Dog".equals(className) / 判断是哪个子类的标记 a = new Dog; / 通过Dog子类实例化接口 return a; public class FactoryDemo public static void main(String args) Animal a = null; / 定义接口对象 a = Factory.getInstance(args0); / 通过工厂获取实例 if (a != null) / 判断对象是否为空 a.say; / 调用方法 java view plaincopyprint? interface Animal / 定义一个动物的接口 public void say; / 说话方法 class Cat implements Animal / 定义子类Cat Override public void say / 覆写say方法 System.out.println("我是猫咪,喵呜!"); class Dog implements Animal / 定义子类Dog Override public void say / 覆写say方法 System.out.println("我是小狗,汪汪!"); class Factory / 定义工厂类 public static Animal getInstance(String className) Animal a = null; / 定义接口对象 if ("Cat".equals(className) / 判断是哪个子类的标记 a = new Cat; / 通过Cat子类实例化接口 if ("Dog".equals(className) / 判断是哪个子类的标记 a = new Dog; / 通过Dog子类实例化接口 return a; public class FactoryDemo public static void main(String args) Animal a = null; / 定义接口对象 a = Factory.getInstance(args0); / 通过工厂获取实例 if (a != null) / 判断对象是否为空 a.say; / 调用方法 interface Animal / 定义一个动物的接口 public void say; / 说话方法 class Cat implements Animal / 定义子类Cat Override public void say / 覆写say方法 System.out.println("我是猫咪,喵呜!"); class Dog implements Animal / 定义子类Dog Override public void say / 覆写say方法 System.out.println("我是小狗,汪汪!"); class Factory / 定义工厂类 public static Animal getInstance(String className) Animal a = null; / 定义接口对象 if ("Cat".equals(className) / 判断是哪个子类的标记 a = new Cat; / 通过Cat子类实例化接口 if ("Dog".equals(className) / 判断是哪个子类的标记 a = new Dog; / 通过Dog子类实例化接口 return a; public class FactoryDemo public static void main(String args) Animal a = null; / 定义接口对象 a = Factory.getInstance(args0); / 通过工厂获取实例 if (a != null) / 判断对象是否为空 a.say; / 调用方法 3.代理设计模式 指由一个代理主题来操作真实主题,真实主题执行具体的业务操作,而代理主题负责其他相关业务的处理。比如生活中的通过代理访问网络,客户通过网络代理连接网络,由代理服务器完成用户权限和访问限制等与上网相关的其他操作。 示例代码如下: Java代码 interface Network / 定义Network接口 public void browse; / 定义浏览的抽象方法 class Real implements Network / 真实的上网操作 public void browse / 覆写抽象方法 System.out.println("上网浏览信息!"); class Proxy implements Network / 代理上网 private Network network; public Proxy(Network network) / 设置代理的真实操作 work = network; / 设置代理的子类 public void check / 身份验证操作 System.out.println("检查用户是否合法!"); public void browse this.check; / 调用具体的代理业务操作 work.browse; / 调用真实的上网操作 public class ProxyDemo public static void main(String args) Network net = null; / 定义接口对象 net = new Proxy(new Real); / 实例化代理,同时传入代理的真实操作 net.browse; / 调用代理的上网操作 java view plaincopyprint? interface Network / 定义Network接口 public void browse; / 定义浏览的抽象方法 class Real implements Network / 真实的上网操作 public void browse / 覆写抽象方法 System.out.println("上网浏览信息!"); class Proxy implements Network / 代理上网 private Network network; public Proxy(Network network) / 设置代理的真实操作 work = network; / 设置代理的子类 public void check / 身份验证操作 System.out.println("检查用户是否合法!"); public void browse this.check; / 调用具体的代理业务操作 work.browse; / 调用真实的上网操作 public class ProxyDemo public static void main(String args) Network net = null; / 定义接口对象 net = new Proxy(new Real); / 实例化代理,同时传入代理的真实操作 net.browse; / 调用代理的上网操作 interface Network / 定义Network接口 public void browse; / 定义浏览的抽象方法 class Real implements Network / 真实的上网操作 public void browse / 覆写抽象方法 System.out.println("上网浏览信息!"); class Proxy implements Network / 代理上网 private Network network; public Proxy(Network network) / 设置代理的真实操作 work = network; / 设置代理的子类 public void check / 身份验证操作 System.out.println("检查用户是否合法!"); public void browse this.check; / 调用具体的代理业务操作 work.browse; / 调用真实的上网操作 public class ProxyDemo public static void main(String args) Network net = null; / 定义接口对象 net = new Proxy(new Real); / 实例化代理,同时传入代理的真实操作 net.browse; / 调用代理的上网操作 4.观察者设计模式 所谓观察者模式,举个例子现在许多购房者都密切观察者房价的变化,当房价变化时,所有购房者都能观察到,以上的购房者属于观察者,这便是观察者模式。 java中可以借助Observable类和Observer接口轻松实现以上功能。当然此种模式的实现也不仅仅局限于采用这两个类。 示例代码如下: Java代码 import java.util.Observable; import java.util.Observer; class House extends Observable private float price; public void setPrice(float price) this.setChanged;/ 设置变化点 this.notifyObservers(price);/ 通知所有观察者价格改变 this.price = price; public float getPrice return this.price; public House(float price) this.price = price; public String toString return "房子价格为: " + this.price; class HousePriceObserver implements Observer private String name; public HousePriceObserver(String name) super; this.name = name; Override public void update(Observable o, Object arg) / 只要改变了 observable 对象就调用此方法 if (arg instanceof Float) System.out.println(this.name + "观察的价格更改为:" + (Float) arg).floatValue); public class ObserDeom public static void main(String args) House h = new House(1000000); HousePriceObserver hpo1 = new HousePriceObserver("购房者A"); HousePriceObserver hpo2 = new HousePriceObserver("购房者B"); HousePriceObserver hpo3 = new HousePriceObserver("购房者C"); h.addObserver(hpo1);/ 给房子注册观察者 h.addObserver(hpo2);/ 给房子注册观察者 h.addObserver(hpo3);/ 给房子注册观察者 System.out.println(h);/ 输出房子价格 / 修改房子价格,会触发update(Observable o, Object arg)方法通知购房者新的房价信息 h.setPrice(2222222);/ System.out.println(h);/ 再次输出房子价格 java view plaincopyprint? import java.util.Observable; import java.util.Observer; class House extends Observable private float price; public void setPrice(float price) this.setChanged;/ 设置变化点 this.notifyObservers(price);/ 通知所有观察者价格改变 this.price = price; public float getPrice return this.price; public House(float price) this.price = price; public String toString return "房子价格为: " + this.price; class HousePriceObserver implements Observer private String name; public HousePriceObserver(String name) super; this.name = name; Override public void update(Observable o, Object arg) / 只要改变了 observable 对象就调用此方法 if (arg instanceof Float) System.out.println(this.name + "观察的价格更改为:" + (Float) arg).floatValue); public class ObserDeom public static void main(String args) House h = new House(1000000); HousePriceObserver hpo1 = new HousePriceObserver("购房者A"); HousePriceObserver hpo2 = new HousePriceObserver("购房者B"); HousePri

    注意事项

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

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开