欢迎来到天天培训网!全国[切换城市] 登录 注册
首页 发布课程 机构平台 手机浏览

手机扫一扫

咨询热线

400-0808-102

电脑培训——设计模式总结

常州东方博宜教育培训学校   2013-04-02 阅读:612

一:设计模式
所谓模式:就是一套问题的解决方案
套路
招术


二:设计分类:
宏观两大类
JAVA设计模式:23种
又可以分为:
创建型:比如单例,工厂
结构型
行为型


J2EE设计模式:
比如MVC模式,前端控制器,业务委派等等

三:单例模式:
作用:保证我们的类的实例只有一个,也就是有一些类,不需要被多次new,一个就够了,常见的比如,读取文件的类,类似于这样的情况,就不需要该类被创建多次,也就是new一次就够了


单例分类:
饿汉式
懒汉式
两种类型代表了不同的创建风格

使用步骤:
1.首先自己先创建一个类的实例
2.为了让这个实例只是被创建一次,用static来修饰一下
3.为了不让客户端直接来访问该对象,你可以使用private控制访问
4.提供一个方法来访问这个全局的staitc类型的实例
 public FileReader getInstance(){
  return filereader;
 }

5.要访问该方法,也必须先创建该类,然后才能访问,为了避免这种创建,可以使用static类修饰,然后就可以使用:
类名.方法


来调用
该方法被称为"单例方法"

6.有了这个单例的方法,就不需要客户端来new这个类了,所以,你可以将构造器变为私有,这就强制要求客户端必须通过单例方法来获取该类的唯一的实例

private static FileReader filereader = new FileReader();
 
 public static FileReader getInstance(){
  return filereader;
 }
 
 private FileReader(){
  
 }

这种写法被称为"饿汉式单例"

7.等着看效果

在人员管理界面中:
FileReader fr1 = FileReader.getInstance();
fr1.setFilename("我的过滤文件");
out.println(fr1.getFilename());

在这里,fr1指的就是在FileReader类中被创建出来的那个对象

在部门管理界面中:
FileReader fr2 = FileReader.getInstance();
out.println(fr2.getFilename());

这里的fr2指向的也是FileReader类那个被唯一创建出来的实例


也就是说,fr1和fr2指的是同一个实例


所以,当在staff.jsp文件中,fr1.setFilename("我的过滤文件");设置后,
在department.jsp文件中,通过out.println(fr2.getFilename());得到的结果也为
"我的过滤文件".
因为它们指的是同一个"实例"


8.懒汉式单例:
private static PropertiesMgr pm = null;
 private PropertiesMgr(){
  System.out.println("propertiesmgr被构造...");
 }
 
 public static PropertiesMgr getInstance(){
  if(pm==null){
   pm = new PropertiesMgr();
  }
  return pm;
 }


在声明pm对象的时候,并没有马上创建PropertiesMgr 的对象
而只有当调用getInstance方法的时候才被创建出实例来


而这一点和饿汉式的单例不太一样,
对于饿汉式单例而言,至于该类被访问,马上就new出新的实例来


比较一下区别:
饿汉式是直接就创建一个实例出来
而懒汉式创建的步骤延迟了一步,只有当getInstance方法被调用的时候,才创建


四:工厂模式:
很多时候,我们要得到一个实例,往往不是直接new这么简单,从系统扩展性考虑,一个接口有多个实现类,我们往往需要动态的决定创建某个类的实例,如果在代码中写死,也就是说你的程序的可维护性和扩展性被大大降低

1.找到
2.改动代码
3.打包
4.发布


可维护性就有保障了

方法之一:
把这些可变的东西,从代码中抽取出来,在我们的例子中,我们把这些信息提取到properties配置文件中,当我们需要改动的时候,我们就可以覆盖配置文件即可

现在,我们需要建立一个工厂,只让它做一件事情,用来生产斧头,对于客户端而言(客户端一定是多个)就无须干涉这"斧头"是如何创建出来的

如何来建立一个工厂
1.我们有一个市场部,专门用来收集订单,在本系统中,config.properties就是用来收集"你到底想要哪把斧头"
classname=com.sun.demo.Fruit

2.你需要拿到客户预订的需求
String strName = p.getProperty("classname");


3.创建该对象(我们的这个对象就是com.sun.demo.Fruit)


在本例中,我们所编写的FruitFactory,因为承担了生产实例的职责,我们把它称为"工厂类"

招术=======工厂模式


工厂模式的衍生:简单工厂:抽象工厂。工厂方法

咨询电话:400-0808-102 联系QQ:1294015820
更多请进入:https://www.ttpx.net/com/dfbyjy/
地址:常州新北区太湖东路常州创意园5楼
常州东方博宜教育|常州电脑基础培训|常州办公软件设计培训班

免责声明:
本站部份内容系网友自发上传与转载,不代表本网赞同其观点;
如涉及权等问题请及时与我们联系,将在第一时间删除处理!TEL:400-0808-102;E-MAIL:895240345@qq.com