知识点11-面向对象

大纲

1. 三大特性

封装
继承
多态

2. 单例模式

线程不安全问题: uniqueInstance 被实例化多次

public class Singleton {

    private static Singleton uniqueInstance;

    private Singleton() {
    }

    // 懒汉式-线程不安全:多个线程可能同时进入 if (uniqueInstance == null)语句,实例化多次 uniqueInstance。
    public static Singleton getUniqueInstance() {
        if (uniqueInstance == null) {
            uniqueInstance = new Singleton();
        }
        return uniqueInstance;
    }

    // 懒汉式-线程安全:对 getUniqueInstance() 方法加锁,那么在一个时间点只能有一个线程能够进入该方法,从而避免了实例化多次 uniqueInstance。
    public static synchronized Singleton getUniqueInstance() {
    if (uniqueInstance == null) {
        uniqueInstance = new Singleton();
    }
    return uniqueInstance;
    }

    // 饿汉式-线程安全:直接实例化 uniqueInstance 的方式。但是丢失了延迟实例化带来的节约资源的好处。
    private static Singleton uniqueInstance = new Singleton();
}

3. MVC模式

包括模型,视图,控制器三层:
模型(Model) - 程序员编写程序应有的功能(实现算法等等)、数据库专家进行数据管理和数据库设计(可以实现具体的功能)。
视图(View) - 界面设计人员进行图形界面设计。
控制器(Controller)- 负责转发请求,对请求进行处理。


三种模式的组合:
View层,单独实现了组合模式(组合对象拥有一个或者多个组件对象,因此组合对象的操作可以委托给组件对象去处理,而组件对象可以是另一个组合对象或者叶子对象。)
Model层和View层,实现了观察者模式
View层和Controller层,实现了策略模式(不同动物不同叫声)

4. JDK常用

装饰者模式:为对象动态添加功能,创建装饰者调用该对象。

  • java.io.BufferedInputStream(InputStream)
  • java.io.DataInputStream(InputStream)
  • java.io.BufferedOutputStream(OutputStream)
  • java.util.zip.ZipOutputStream(OutputStream)
  • java.util.Collections#checkedList|Map|Set|SortedSet|SortedMap

适配器模式:把一个类接口转换成另一个用户需要的接口。

  • java.util.Arrays#asList()
  • java.util.Collections#list()
  • java.util.Collections#enumeration()
  • javax.xml.bind.annotation.adapters.XMLAdapter

迭代器模式:提供一种顺序访问聚合对象元素的方法,并且不暴露聚合对象的内部表示。

  • java.util.Iterator
  • java.util.Enumeration

你可能感兴趣的:(知识点11-面向对象)