前记:进入C++设计模式第二周,本周学习了构造类模式和接口隔离类模式。
创建型模式:
前面说了设计模式的一个核心的原则是松耦合,高聚合。通俗的讲是分离细化。模块化编程,分隔各个功能部分,分隔客户接口和代码实现。创建型设计模式正式遵循这些原则的范例。分隔了类实例的创建过程,将创建对象交给另一个对象来完成。
具体有以下四种基本模式:
1,工厂方法模型
1)定义:
定义一个用于创建对象的接口,让子类去决定实例化哪个类。
2)优点:
克服了简单工厂违背开放封闭原则的缺点,又保持了对象创建过程的优点。
2,抽象工厂
1)定义:
提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。
2)优点:
让具体的创建实例过程与客户端分离,客户端是通过他们的抽象接口操纵实例,产品的具体类名也被具体工厂的实现分离,不会出现在客户端代码中。
3,原型模式
1)定义:
用原型实例指定创建对象的种类,并且通过拷贝这些原型实例创建新的对象。
4,建造者模式
1)定义:
将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示。
还有一种为单例(单件)模式,核心思想是类只有自己创建的一个对象实例,可以提供可以全局访问的接口。
接口隔离模式
接口隔离也是松耦合原则的一个直接体现。很多直接依赖的接口会带来很多问题,甚至无法实现。添加一种稳定的间接接口,稳定客户的访问,并提高代码的可维护性。
典型的模式:
1,门面模式(Facade)
将子系统的访问通过门面Facade来访问,外部只需要调用Facade接口就行,剩下的工作有Facade来调用内部各项功能。
在门面模式中,通常只需要一个门面类,并且此门面类只有一个实例,换言之它是一个单例类。但是不一定只给系统设置一个门面,多个也可以。
2,代理模式(PROXY)
为其他对象提供一种代理以便于控制对这个对象的访问。
3,适配器(Adapter)
将类的接口转换为另一种接口,使得不兼容此接口的类可以通过适配器(Adapter)访问使用这些接口。
4,中介者(Mediator)
很多时候对象间有很多相互引用和依赖的情况,这样不利于松耦合设计。用中介对象封装这些对象的交互,使得对象不用显式的相互引用,从而使其耦合松散。