设计模式之创建型模式

             创建型模式(5种)

              单例模式

特点:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
这里写图片描述
优点:

1,单例模式提供了对唯一实例的访问2,在系统内存中只存在一个对象,所以可以节约系统资源
缺点:单例扩展有较大困难

              工厂方法模式

特点:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法是一个类的实例化延迟到其子类。
这里写图片描述
优点:
1,工厂方法来创建客户所需要的产品,而客户只需要关心所需产品对应的工厂即可,不需要关心创建细节,甚至不需要知道具体产品类的类名
2,能够让工厂自主确定创建何种产品对象,而如何创建这个对象的细节,完全封装在具体工厂内部。
3,当系统需要加入新产品时,无须修改抽象工厂或抽象产品提供的接口,不需要修改客户端,也不需要修改其他具体的工厂和产品,只需要再添加一个新的具体工厂和产品就OK。使得系统的可扩展性变得很好,符合“开放-封闭”原则
缺点:
在添加新产品时,需要编写新的类,还要添加与之对应的具体工厂类,在一定程度上增加了

              抽象工厂模式

特点:提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。
这里写图片描述
优点:
抽象工厂,顾名思义就是对于客户来说,它是抽象的,也就是客户不需要知道什么被创建,从而可以减少客户端与具体产品类之间的依赖,进而使得系统的耦合度降低,使得后期的维护和扩展更加方便。
缺点:
很难支持新产品的变化。因为在抽象接口中已经确定了可以被创建的产品集合,如果需要添加新的产品,就需要更改抽象工厂的接口,这样就涉及到了抽象工厂的类及其所有子类的改变,也就违背了“开放-关闭”的原则

              建造者模式

特点将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一种对象创建型模式。
这里写图片描述
优点:
1,客户端不必知道产品内部组成的细节,将产品本身与产品的创建过程解耦,使得相同的创建过程可以创建不同的产品对象。
2, 每一个具体建造者都相对独立,而与其他的具体建造者无关,因此可以很方便地替换具体建造者或增加新的具体建造者,用户使用不同的具体建造者即可得到不同的产品对象。符合“开放-封闭”原则
3, 可以更加精细地控制产品的创建过程
缺点:
1, 建造者模式所创建的产品一般具有较多的共同点,其组成部分相似,如果产品之间的差异性很大,不适合使用建造者模式,因此其使用范围受到一定的限制。
2,如果产品的内部变化复杂,可能会导致需要定义很多具体建造者类来实现这种变化,导致系统变得很庞大,增加系统的理解难度和运行成本

              原型模式

特点使用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式是一种对象创建型模式。
这里写图片描述
优点:
1,当创建新的对象实例较为复杂时,使用原型模式可以简化对象的创建过程
2,扩展性较好
缺点:
1,需要为每一个类配备一个克隆方法

猜你喜欢

转载自blog.csdn.net/ght886/article/details/80112792