写在前面 |
我们已经知道,设计模式有23种:
设计模式类型 | 包括 |
---|---|
创建型模式 (5种) | 单例模式、抽象工厂模式、建造者模式、工厂方法模式、原型模式 |
结构型模式(7种) | 适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式 |
行为型模式 (11种) | 模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式(Interpreter模式)、状态模式、策略模式、职责链模式、访问者模式 |
接下来对创建型模式进行一个详细的介绍和说明
单例模式 |
保证一个类仅有一个实例,并提供一个访问它的全局访问点
优点:
1,单例模式提供了对唯一实例的访问
2,在系统内存中只存在一个对象,所以可以节约系统资源
缺点:
单例扩展有较大困难
抽象工厂模式: |
提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类
优点:
抽象工厂,顾名思义就是对于客户来说,它是抽象的,也就是客户不需要知道什么被创建,从而可以减少客户端与具体产品类之间的依赖,进而使得系统的耦合度降低,使得后期的维护和扩展更加方便。
缺点:
很难支持新产品的变化。因为在抽象接口中已经确定了可以被创建的产品集合,如果需要添加新的产品,就需要更改抽象工厂的接口,这样就涉及到了抽象工厂的类及其所有子类的改变,也就违背了“开放-关闭”的原则
建造者模式: |
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一种对象创建型模式。
优点:
1,客户端不必知道产品内部组成的细节,将产品本身与产品的创建过程解耦,使得相同的创建过程可以创建不同的产品对象。
2, 每一个具体建造者都相对独立,而与其他的具体建造者无关,因此可以很方便地替换具体建造者或增加新的具体建造者,用户使用不同的具体建造者即可得到不同的产品对象。符合“开放-封闭”原则
3, 可以更加精细地控制产品的创建过程
缺点
1, 建造者模式所创建的产品一般具有较多的共同点,其组成部分相似,如果产品之间的差异性很大,不适合使用建造者模式,因此其使用范围受到一定的限制。
2,如果产品的内部变化复杂,可能会导致需要定义很多具体建造者类来实现这种变化,导致系统变得很庞大,增加系统的理解难度和运行成本
工厂方法模式: |
定义一个用于创建对象的接口,让子类决定实例化哪一个类
优点:
1,工厂方法来创建客户所需要的产品,而客户只需要关心所需产品对应的工厂即可,不需要关心创建细节,甚至不需要知道具体产品类的类名
2,能够让工厂自主确定创建何种产品对象,而如何创建这个对象的细节,完全封装在具体工厂内部。
3,当系统需要加入新产品时,无须修改抽象工厂或抽象产品提供的接口,不需要修改客户端,也不需要修改其他具体的工厂和产品,只需要再添加一个新的具体工厂和产品就OK。使得系统的可扩展性变得很好,符合“开放-封闭”原则
缺点:
在添加新产品时,需要编写新的类,还要添加与之对应的具体工厂类,在一定程度上增加了系统的复杂度
原型模式: |
使用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式是一种对象创建型模式。
优点:
1,当创建新的对象实例较为复杂时,使用原型模式可以简化对象的创建过程
2,扩展性较好
缺点:
需要为每一个类配备一个克隆方法
总结
到这里只是进行了一个简单的了解,在以后的过程中,还会再学习。
感谢您的阅读~~