java设计模式心得
2016-04-19 17:15
369 查看
java的设计模式有23种。我现在知道的有4种,工厂模式、单列模式、观察者和装饰模式,以后会在这篇博客下陆续补充。说起java的设计模式,在还没接触这些模式以前,我一直都不知道原来java代码可以按照一些模式来规范和优化。设计模式有很多种好处,下面我浅谈几种设计模式。
1、工厂模式
故名思义,这种设计模式和工厂有关。简单的来说,就是不在当前类里直接创建另一个类的对象,而是通过另一个类(下面把另一个类称为工厂类)来代替当前类创建对象,然后再把这个对象传给当前类。需要说明的是,这个工厂类不必在当前类中创建对象,而是通过类名调用其类中静态方法来代替创建当前类需要的对象。这种方式即为工厂模式。
下面通过代码演示
/**
* 工厂类
* @param args
*/
public class Factory {
public static Text_1 createText_1() {
Text_1 t = new Text_1();
return t;
}
}
/**
* 工厂类代替创建的类
* @param args
*/
public class Text_1 {
public void show() {
System.out.println("我创建了");
}
}
/**
* 测试类
* @param args
*/
public class Text {
public static void main(String[] args) {
Text_1 t = Factory.createText_1();
t.show();
}
}
结果输出:我创建了。
这种模式的优点:易于代码的修改,列如当前类需要对象的类的构造方法发生变化,不需要去修改当前类的代码,只需要修改工厂类里的代码。
2、装饰模式
装饰模式简单的来说,就是通过一个或多个装饰者去装饰被装饰者,从而达到装饰的效果。而这种方法是通过java的多态、实现接口和继承的方式实现的。
大体实现方式
1)需要定义一个接口,即被装饰者。
2)定义一个抽象装饰类去继承接口(被装饰者),这个抽象装饰类即为所有装饰类的父类。在这个抽象装饰类中关联接口(被装饰者),即在抽象装饰类的属性中声明这个接口。还要在构造方法中传入这个接口的实现类。
3)定义一个被装饰者类实现被装饰者接口。
4)定义一个或多个装饰类继承抽象装饰类(按实际需要)
5)创建一个被装饰类的对象,把该对象传入装饰类构造对象则实现装饰。
优点:解决一个工程里类过多的情况
3、单列模式
当要求工程里只需要一个类仅能创建一个对象时,这时候需要用到单例模式。
大体实现方式:
1)将类的构造方法设为私有。
2)在类中定义静态方法create(),在create()方法中调用该类的构造函数,用逻辑实现create()方法只能调用一次构造方法。create()方法的返回值为该类的对象。
优点:科确保一个工程内要求只能创建一个对象的类只能创建一个对象。
4、观察者模式
简单的来说,用一个类去观察另一个类;
大体实现方式:
1)定义一个被观察者类,其内定义一个Arraylist用于保存观察者对象。
2)在被观察类中定义一个方法用于通知观察者。
3)创建被观察者类对象。
3)创建观察者对象,保存在被观察对象的Arraylist中。
1、工厂模式
故名思义,这种设计模式和工厂有关。简单的来说,就是不在当前类里直接创建另一个类的对象,而是通过另一个类(下面把另一个类称为工厂类)来代替当前类创建对象,然后再把这个对象传给当前类。需要说明的是,这个工厂类不必在当前类中创建对象,而是通过类名调用其类中静态方法来代替创建当前类需要的对象。这种方式即为工厂模式。
下面通过代码演示
/**
* 工厂类
* @param args
*/
public class Factory {
public static Text_1 createText_1() {
Text_1 t = new Text_1();
return t;
}
}
/**
* 工厂类代替创建的类
* @param args
*/
public class Text_1 {
public void show() {
System.out.println("我创建了");
}
}
/**
* 测试类
* @param args
*/
public class Text {
public static void main(String[] args) {
Text_1 t = Factory.createText_1();
t.show();
}
}
结果输出:我创建了。
这种模式的优点:易于代码的修改,列如当前类需要对象的类的构造方法发生变化,不需要去修改当前类的代码,只需要修改工厂类里的代码。
2、装饰模式
装饰模式简单的来说,就是通过一个或多个装饰者去装饰被装饰者,从而达到装饰的效果。而这种方法是通过java的多态、实现接口和继承的方式实现的。
大体实现方式
1)需要定义一个接口,即被装饰者。
2)定义一个抽象装饰类去继承接口(被装饰者),这个抽象装饰类即为所有装饰类的父类。在这个抽象装饰类中关联接口(被装饰者),即在抽象装饰类的属性中声明这个接口。还要在构造方法中传入这个接口的实现类。
3)定义一个被装饰者类实现被装饰者接口。
4)定义一个或多个装饰类继承抽象装饰类(按实际需要)
5)创建一个被装饰类的对象,把该对象传入装饰类构造对象则实现装饰。
优点:解决一个工程里类过多的情况
3、单列模式
当要求工程里只需要一个类仅能创建一个对象时,这时候需要用到单例模式。
大体实现方式:
1)将类的构造方法设为私有。
2)在类中定义静态方法create(),在create()方法中调用该类的构造函数,用逻辑实现create()方法只能调用一次构造方法。create()方法的返回值为该类的对象。
优点:科确保一个工程内要求只能创建一个对象的类只能创建一个对象。
4、观察者模式
简单的来说,用一个类去观察另一个类;
大体实现方式:
1)定义一个被观察者类,其内定义一个Arraylist用于保存观察者对象。
2)在被观察类中定义一个方法用于通知观察者。
3)创建被观察者类对象。
3)创建观察者对象,保存在被观察对象的Arraylist中。
相关文章推荐
- 关于JAVA中RSA加签解签,私钥加密公钥解密和公钥加密私钥解密代码详解
- MyEclipse从数据库反向生成实体类通过Hibernate的方式----mysql数据库实例
- java基本数据类型传递与引用传递区别详解
- Java 线程第三版 第四章 Thread Notification 读书笔记
- Struts2 Could not find action or result:错误
- JavaMail技术 用java代码发送邮件
- 使用springmvc后事物不起作用的原因
- spring 不同注解的使用场景
- JAVA虚拟机之六:虚拟机性能监控和故障处理工具
- JAVA虚拟机之五:常见配置与范例
- Maven搭建SSM(SpringMVC + Spring + Mybaits)开发环境 (下)
- 【干货】Spring MVC与JAX-RS比较与分析
- struts2开发7--在struts2中实现上传文件类型过滤
- JAVA虚拟机之四:G1垃圾收集器
- Eclipse 出现的问题总结
- 关于JAVA取本机ip的一些传说
- Java基础--反射、内省
- JAVA虚拟机之二:Java体系结构
- JAVA虚拟机之三:CMS垃圾收集器
- JAVA虚拟机之一:垃圾回收(GC)机制