jdk哪些体现了命令模式
1、单例模式
作用:保证类只有一个实例。
JDK中体现:Runtime类。
2、静态工厂模式
作用:代替构造函数创建对象,方法名比构造函数清晰。
JDK中体现:Integer.valueOf、Class.forName
3、抽象工厂
作用:创建某一种类的对象。
JDK中体现:Java.sql包。
4、原型模式
clone();
原型模式的本质是拷贝原型来创建新的对象,拷贝是比new更快的创建对象的方法,当需要大批量创建新对象而且都是同一个类的对象的时候考虑使用原型模式。
一般的克隆只是浅拷贝(对象的hash值不一样,但是对象里面的成员变量的hash值是一样的)。
有些场景需要深拷贝,这时我们就要重写clone方法,以ArrayList为例:
5、适配器模式
作用:使不兼容的接口相容。
JDK中体现:InputStream、OutputStream。
6、装饰器模式
作用:为类添加新的功能,防止类继承带来的类爆炸。
JDK中体现:io类、Collections、List。
7、外观模式
作用:封装一组交互类,一直对外提供接口。
JDK中体现:logging包。
8、享元模式
作用:共享对象、节省内存。
JDK中体现:Integer.valueOf、String常量池。
9、代理模式
作用:
(1)透明调用被代理对象,无须知道复杂实现细节;
(2)增加被代理类的功能;
JDK中体现:动态代理。
10、迭代器模式
作用:将集合的迭代和集合本身分离。
JDK中体现:Iterator
11、命令模式
作用:封装操作,使接口一致。
java的输入和输出为什么要那么复杂
Java的IO设计的确很复杂,很多朋友在使用时IO时被各种各样的流弄的晕头转向。
大致情况如下
以Stream结尾的为字节流,以Writer或者Reader结尾的为字符流,
所有的输入流都是抽象类IuputStream(字节输入流)或者抽象类Reader(字符输入流)的子类。
所有的输出流都是抽象类OutputStream(字节输出流)或者抽象类Writer(字符输出流)的子类
之所以IO那么复杂,是为了更好的应对各种场景,比如
BufferedWriter 从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。由于继承了FilterInputStream,其可用于包装装饰其他流使它们提高效率,既采用了装饰设计模式。
InputStreamReader和OutputStreamWriter转换流,作为字符和字节的桥梁
对象操作流ObjectInputStream和ObjectOutputStream用于Java 对象的基本数据类型和图形读写。
用于操作数组ByteArrayInputStream,字符串StringWriter等流
区分技巧,下面分享下我找到的一份IO使用技巧总结
IO设计非常复杂不过其目标还是为了能更好的应对各种场景使用更适合的流提高效率。希望我的回答对你有所帮助。
什么叫设计模式
java中的设计模式:总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

