HeadFirst设计模式

作者: vaneL | 来源:发表于2017-07-30 16:14 被阅读112次

    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设计模式

        本文链接:https://www.haomeiwen.com/subject/wbuhlxtx.html