用一个例子说明设计模式五种创建型模式!

用一个例子说明设计模式五种创建型模式!!!

这是我写设计模式的第二篇笔记随笔,第一篇笔记随笔链接:用现实生活中实例解释说明设计模式六大基本原则

后续会在这个例子上扩展,包含其余结构型模式和行为型模式,后续代码会上传GitHub。

更多操作创建型模式 这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。

工厂模式(Factory Pattern)

抽象工厂模式(Abstract Factory Pattern)

单例模式(Singleton Pattern)单例模式原理较为简单,不作阐述,例子中使用到了单例模式

建造者模式(Builder Pattern)

原型模式(Prototype Pattern)

一辆汽车包含电气部分(Electical)发动机(Engine)和外壳(Shell);然后衍生出了电气部分工厂,发动机工厂和外壳工厂;宝马(BMW)部件生产工厂,奔驰(Benz)部件生产工厂等等……

以这个例子由简单到复杂讲解五种创建型模式

整体代码结构:

用一个例子说明设计模式五种创建型模式!

UML图 UML简图

用一个例子说明设计模式五种创建型模式!

UML完整图

用一个例子说明设计模式五种创建型模式!

工厂模式 简单工厂模式

简单工厂包含如下角色:

抽象产品 :定义了产品的规范,描述了产品的主要特性和功能。

具体产品 :实现或者继承抽象产品的子类

具体工厂 :提供了创建产品的方法,调用者通过该方法来获取产品。

抽象产品:

电气部分(Electical)

发动机(Engine)

外壳(Shell)

具体产品:

CarElectical

CarEngine

CarShell

具体工厂:

CarElecticalFactory

CarEngineFactory

CarShellFactory

用一个例子说明设计模式五种创建型模式!

优缺点

优点:

封装了创建对象的过程,可以通过参数直接获取对象。把对象的创建和业务逻辑层分开,这样以后就避免了修改客户代码,如果要实现新产品直接修改工厂类,而不需要在原代码中修改,这样就降低了客户代码修改的可能性,更加容易扩展。

缺点:

增加新产品时还是需要修改工厂类的代码,违背了“开闭原则”。

工厂方法模式

定义一个用于创建对象的接口,让子类决定实例化哪个产品类对象。工厂方法使一个产品类的实例化延迟到其工厂的子类。

工厂方法模式的主要角色:

抽象工厂(Abstract Factory):提供了创建产品的接口,调用者通过它访问具体工厂的工厂方法来创建产品。

具体工厂(ConcreteFactory):主要是实现抽象工厂中的抽象方法,完成具体产品的创建。

抽象产品(Product):定义了产品的规范,描述了产品的主要特性和功能。

具体产品(ConcreteProduct):实现了抽象产品角色所定义的接口,由具体工厂来创建,它同具体工厂之间一一对应。

增加了抽象工厂MultiplePartsFactory:

用一个例子说明设计模式五种创建型模式!

优缺点

优点:

用户只需要知道具体工厂的名称就可得到所要的产品,无须知道产品的具体创建过程;

在系统增加新的产品时只需要添加具体产品类和对应的具体工厂类,无须对原工厂进行任何修改,满足开闭原则;

缺点:

每增加一个产品就要增加一个具体产品类和一个对应的具体工厂类,这增加了系统的复杂度。

抽象工厂模式

前面介绍的工厂方法模式中考虑的是一类产品的生产,如畜牧场只养动物、电视机厂只生产电视机;这些工厂只生产同种类产品,同种类产品称为同等级产品,也就是说:工厂方法模式只考虑生产同等级的产品,但是在现实生活中许多工厂是综合型的工厂,能生产多等级(种类) 的产品,如电器厂既生产电视机又生产洗衣机或空调,大学既有软件专业又有生物专业等。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwsfgs.html