为了使构造的软件具有更高的可复用性和可维护性,在设计类和功能时将采用一些特定的设计模式来提高其效益。这些设计模式包括创造型模式、结构型模式和行为类模式。
一。创造型模式
创造型模式主要用于在特定的场景下灵活地创建类或者对象
工厂模式方法(Factory Method pattern)
在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。
当client不知道要创建哪个具体类的实例,或者不想在client代码中指明要具体创建的实例时,用工厂方法。定义一个用于创建对象的接口,让其子类来决定实例化哪一个类,从而使一个类的实例化延迟到其子类。其实现概图如下:
二。结构型模式
结构型模式主要用于处理类和对象的组合
适配器模式(Adapter)
适配器模式是作为两个不兼容的接口之间的桥梁,它结合了两个独立接口的功能。这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。
将某个类或接口转换为client期望的形式,即通过额外增加一个接口,将已存在的子类封装起来,client面向接口编程,从而隐藏了具体子类。其实现概图如下:
装饰器模式(Decorator)
装饰器模式许向一个现有的对象添加新的功能,同时又不改变其结构。这种模式创建了一个装饰类,用来包装原有的类并增加不同侧面的特性,对每一个特性构造子类,并通过委派机制增加到对象上。并保持类方法签名完整性的前提下,提供了额外的功能。其实现概图如下:
三。行为类模式
行为类模式主要用于描述类或对象的交互和职责分配
策略模式(Strategy)
在有多种算法相似的情况下,如果想要在方法使用中随时切换算法,使用if-else过于繁琐,此时就要用到策略模式,该模式在于创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。其实现概图如下:
模板模式(Template Method)
在模板模式中,一个抽象类公开定义了执行它的方法的方式或模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。其目的在于定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。其实现概图如下:
迭代器模式(Iterator)
迭代器模式在于提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。其关键在于定义接口,实现hasNext和next方法。迭代器模式中,增加新的聚合类和迭代器类都很方便,无须修改原有代码。但同时由于迭代器模式将存储数据和遍历数据的职责分离,增加新的聚合类需要对应增加新的迭代器类,类的个数成对增加,这在一定程度上增加了系统的复杂性。其实现概图如下:
访问者模式(Visitor)
访问者模式在于将数据结构与数据操作分离,以此来获取稳定的数据结构和易变的操作耦合问题。在该模式中使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。其实现概图如下:
上述即为我对面向可复用性和可维护性设计模式的一点理解,希望能在巩固自身掌握的同时为其他阅读者带来一点收获。💪