HeadFirst设计模式

1.策略模式(Strategy Pattern)

定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于算法的客户。

2.观察者模式(Observer)

定义了对象之间的一对多依赖。当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。

3.装饰者模式

动态地将责任附加在对象上。

装饰者和被装饰对象有相同的超类型。

4.工厂模式

定义一个创建对象的接口,但由子类决定要实例化的类是哪一个。

工厂方法让类把实例化推迟到子类。

创建者Creator和产品类Products

抽象工厂模式

提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。

工厂模式:

一个抽象产品类,可以派生出多个具体产品类。

一个抽象工厂类,可以派生出多个具体工厂类。

每个具体工厂类只能创建一个具体产品类的实例。

抽象工厂模式:

多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。

一个抽象工厂类,可以派生出多个具体工厂类。

每个具体工厂类可以创建多个具体产品类的实例。

区别:

工厂模式只有一个抽象产品类,而抽象工厂模式有多个。

工厂模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式可以创建多个。

5.单件模式(Single Pattern)

确保一个类只有一个实例,并提供一个全局访问点。

//懒汉式单例类.在第一次调用的时候实例化自己

public class Singleton {

        private Singleton() {}

         private static Singleton single=null;

          //静态工厂方法

         public static Singleton getInstance() {

                     if(single ==null) {

                              single =new Singleton();

                        }

          return  single;

          }

}

//饿汉式单例类.在类初始化时,已经自行实例化

public class Singleton1 {

             private Singleton1() {}

             private static final Singleton1 single =new Singleton1();

              //静态工厂方法

              public static Singleton1 getInstance() {

                          return single;

               }

}

饿汉就是类一旦加载,就把单例初始化完成,保证getInstance的时候,单例是已经存在的了,而懒汉比较懒,只有当调用getInstance的时候,才回去初始化这个单例。




6.命令模式

将“请求”封装成对象,以便使用不同的请求。

角色:

Command

定义命令的接口,声明执行的方法。

ConcreteCommand

命令接口实现对象,是“虚”的实现;通常会持有接收者,并调用接收者的功能来完成命令要执行的操作。

Receiver

接收者,真正执行命令的对象。任何类都可能成为一个接收者,只要它能够实现命令要求实现的相应功能。

Invoker

要求命令对象执行请求,通常会持有命令对象,可以持有很多的命令对象。这个是客户端真正触发命令并要求命令执行相应操作的地方,也就是说相当于使用命令对象的入口。

Client

创建具体的命令对象,并且设置命令对象的接收者。

7.适配器模式

将一个类的接口,转换成客户期望的另一个接口。

8.外观模式

提供一个统一的接口,用来访问子系统中的一群接口。

你可能感兴趣的:(HeadFirst设计模式)