
设计模式
文章平均质量分 66
yedawei_1
这个作者很懒,什么都没留下…
展开
-
设计模式(五)三个设计原则 单一职责、里氏替换原则、合成原则
面向对象编程中,常见的设计原则有六个:单一职责原则、开闭原则、合成原则、里氏替换原则、依赖倒转原则、接口原则、迪米特法则。这里只介绍三个,下一篇文章介绍另三个。单一职责原则这个很简单,就是一个类的职责只做一类型的事情。注意,是一类型,而不是一件事。比如上一篇文章中的EmployeeManage类,它的作用就是管理职工,所以里面可以有:初始化职工信息、查询职工、添加职工、删除职工等接口,这些接口属于同一类型,都是对员工的管理。如果员工需要换等级呢?这个接口当然也可以!那什么类型的接原创 2021-04-22 16:12:02 · 268 阅读 · 0 评论 -
设计模式(四)单例和简单工厂的融合
前面三篇文章介绍了三种模式:单例、简单工厂和工厂方法。其中,简单工厂和工厂方法都是基于同一个实际问题。但是,这个例子里有几个问题:1、职工的创建在main函数中,不合理,可能多个函数都会需要访问职工信息;2、职工是程序直接创建的,不合理,一旦出现新的职工入职,就需要改代码,应该改为文件方式;3、没有最基本的职工查找功能。除了以上三点,还有很多其他的待完善地方,这里先考虑这三点。代码如下(visual studio 2019):#pragma once#include <原创 2021-03-25 16:13:41 · 566 阅读 · 0 评论 -
设计模式(三)工厂方法模式
前一篇文章介绍了简单工厂模式,留下了一个疑问,如果需要扩展员工等级,有没有不修改既有接口的方式?答案就是工厂方法模式。既然员工的职级可以扩展,那创建对应职级员工的工厂是不是也可以扩展?工厂基类提供一个接口获取具体的产品,一旦有新的产品,就创建一个与之对象的工厂类。看代码(visual studio 2019):#pragma once#include <iostream>#include <list>//等级基类和工厂基类class GradeBase原创 2021-03-25 09:55:35 · 211 阅读 · 0 评论 -
设计模式(二)简单工厂
面向对象的程序中,对象的创建是一个非常重要的事情。简单工厂,就是将类的具体对象当做一个个产品,通过一个加工工厂,把这些产品创建出来,这个模式的使用频率非常大。很多公司,根据员工能力,会分为很多级别,不同级别的员工工资不一样。下面就以这个例子(这个例子会一直扩展下去),介绍一下简单工厂。很容易想到,有一个员工职级的基类,定义一个虚函数获取工资,不同职级,从这个基类派生,重写获取工资虚函数。看代码(visual studio 2019):#pragma once#include <原创 2021-03-25 09:23:22 · 136 阅读 · 0 评论 -
设计模式(一)单例模式
单例模式,就是对一个类来说,只有一个实例化对象(这句话不是很准确,但请不要纠结于细节,无意义)。单例有什么好处呢?因为对于整个程序来说(其实是进程),都只有一个实例,那么一些全局的变量和操作(比如链接文件关闭文件)就可以用这个唯一的对象来控制。如何让类只有一个实例对象?对于C++来说,当创建一个对象时,一定会调用类的构造函数。如果让构造函数非public呢?外部不就不能创建类的实例对象了?但是又需要有一个实例对象,怎么办呢?类成员的public等访问属性,是针对类外部的数据访问而言的(派生类对基原创 2021-03-23 15:32:32 · 399 阅读 · 2 评论 -
设计模式有用吗
说到设计模式,给人的感觉很高深莫测,而且许多有关设计模式的书,动不动加之艺术、禅等等唬人的词语,未开始学心已先怯。还有许多初学者,听前辈介绍,买了本GoF的《设计模式-可复用面向对象软件的基础》,啃了几章后,更是云里雾里不知所云,于是内心深处更是避之如蛇蝎。更有甚至,自己不会,不想学,于是乎找出各种佐证来证实设计模式对实际编程并没有什么用处,以此自欺欺人。关于设计模式,因为国内目前IT界鱼...原创 2021-03-18 17:07:31 · 852 阅读 · 2 评论