0
点赞
收藏
分享

微信扫一扫

设计模式-创建者模式

kolibreath 2022-03-20 阅读 67

一.设计模式相关内容介绍

1.设计模式概述

2.UML图

2.1类图

2.1.1 概述

 2.1.2作用

2.1.3 类图的表示法

        类的表示方式

 

2.1.4 类和类之间关系的表示方式

       关联关系

                1.单向关联

                2.双向关联

                3. 自关联

                4.聚合关系

                5.组合关系 

        依赖关系

        继承关系

 

         实现关系

3.软件设计原则

3.1开闭原则

 

3.2里氏代换原则

 

 重写大多时候用来重写抽象的方法 。

在不改变父类功能的前提下,父类对象能用的方法,子类也能用。如果子类不能用,说明改变了原来父类中的一些方法(重写的原因)导致不能用。

3.3依赖倒转原则

 

创建四个类,CPU,硬盘,主存,计算机四个类,CPU,硬盘,主存这三个类作为计算机类的属性。这样计算机的配件的品牌都是固定的了,没法修改。

所以需要改进

在计算机中的属性不再是具体的实现类,而是接口类型。 这样就可以利用多态改变配件品牌了。

3.4接口隔离原则

 

3.5迪米特法则

Fans,Company,Star通过Agent类产生关系。 

3.6合成复用原则

 通过继承关系会产生很多的子类,假如说要增加一个光能汽车类的话,又会产生更多不同颜色汽车子类

 

car和color是聚合关系 

二.创建者模式(5)

 

 

1.单例模式

 介绍

 单例模式的实现

简单工厂模式

 通过一个例子引入:咖啡店点餐系统

分析咖啡店点餐的代码

简单工厂模式(不属于23中设计模式,反而是一种编程习惯)

工厂方法模式

 针对简单工厂模式中的缺点

工厂类和产品之间的耦合,导致增加产品时需要修改工厂类代码违反开闭原则。使用工厂方法模式就可以解决这个问题。

结构

改进简单工厂模式

创建了抽象工厂,创建抽象工厂的子类,一种具体产品具体对应一个工厂。

具体代码 

如何记忆工厂方法模式

抽象产品类对应工厂接口

具体产品对应具体工厂

在工厂类中去创建产品

在客户端(如Coffee)中创建工厂对象获得产品,也可以再对产品进行加工。

简单工厂是以简单工厂为桥梁,在简单工厂中返回咖啡,在商店类中接收咖啡,再返回咖啡,但是在简单工厂中返回咖啡时,需要做if else判断,这个简单工厂就是复合工厂,什么咖啡都生产。

工厂方法是将工厂进行了分类,定义了接口类型,目的是在商店类接收咖啡时,哪种工厂生产的都能接收,因为接口就相当于向上抽象了一级,提高了宽容度,具体工厂的任务就是返回具体的咖啡类型,咖啡店类的任务就是先确定具体工厂的类型再返回咖啡。取咖啡的过程就是只跟咖啡店打交道,给咖啡店具体的咖啡工厂对象,就能让咖啡店返回咖啡了。

个人理解

抽象工厂模式

 介绍

同一产品等级,第一列都是电脑,第二列都是电话。

同一产品族,第一行比如都是苹果公司生产的,有苹果电脑和苹果手机。

第一个产品族的各个产品都是商务风格,第二个产品族都是运动风格。

如何体现同级别产品?图片中的鞋子,上衣,裤子都是同一产品等级。

抽象工厂概念

 结构

实现

 甜品中的两个类属于同一等级,咖啡中的两个类属于同一等级,工厂的子类中美式风格与MatchaMousse和AmericanCoffee相关联,表示两者为同一族,意大利风格类与LatteCoffee和Tiramisu相关联,表示二者同一族。

具体代码

优缺点

使用场景

个人理解

模式拓展

简单工厂模式+配置文件

步骤

原型模式

 概述

结构

实现-浅克隆

 案例

使用场景

缺点:

假如用浅克隆创建了一个对象,当修改这个对象的引用类型的属性时,也会修改被克隆对象的该属性,因为两个对象的这个属性是同一个内存地址。

 扩展-深克隆

建造者模式

 概述

结构

案例

 优缺点

使用场景

模式拓展

个人理解

对比

 工厂方法模式VS建造者模式

抽象工厂模式VS建造者模式

举报

相关推荐

0 条评论