![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式之美
文章平均质量分 83
如我般骄傲
学习
展开
-
设计模式之美-12| 实战二(上):如何对接口鉴权这样一个功能开发做面向对象分析?
十二、设计模式之美-12| 实战二(上):如何对接口鉴权这样一个功能开发做面向对象分析?面向对象分析(OOA)、面向对象设计(OOD)、面向对象编程(OOP),是面向对象开发的三个主要环节。知道什么是 OOA、OOD、OOP。不过,光知道“是什么”是不够的,我们更重要的还是要知道“如何做”,也就是,如何进行面向对象分析、设计与编程。对于一个对于“比较笼统的开发需求,应该如何做需求分析,如何做职责划分?需要定义哪些类?每个类应该具有哪些属性、方法?类与类之间该如何交互?如何组装类成一个可执行的程序?如何利原创 2022-05-18 09:38:14 · 223 阅读 · 0 评论 -
设计模式之美-11| 实战一(下):如何利用基于充血模型的DDD开发一个虚拟钱包系统?
十一、设计模式之美-11| 实战一(下):如何利用基于充血模型的DDD开发一个虚拟钱包系统?一.钱包业务背景介绍一个简单的钱包业务功能如下1、充值用户通过三方支付渠道,把自己银行卡账户内的钱,充值到虚拟钱包账号中。这整个过程,我们可以分解为三个主要的操作流程:第一个操作是从用户的银行卡账户转账到应用的公共银行卡账户;第二个操作是将用户的充值金额加到虚拟钱包余额上;第三个操作是记录刚刚这笔交易流水。2、支付用户用钱包内的余额,支付购买应用内的商品。实际上,支付的过程就是一个转账的过程,从用户的原创 2022-04-20 15:00:07 · 5015 阅读 · 1 评论 -
设计模式之美-10| 实战一(上):业务开发常用的基于贫血模型的MVC架构违背OOP吗?
十、设计模式之美-10| 实战一(上):业务开发常用的基于贫血模型的MVC架构违背OOP吗?很多业务系统都是基于 MVC 三层架构来开发的。实际上,更确切点讲,这是一种基于贫血模型的 MVC 三层架构开发模式。虽然这种开发模式已经成为标准的 Web 项目的开发模式,但它却违反了面向对象编程风格,是一种彻彻底底的面向过程的编程风格,因此而被有些人称为反模式(anti-pattern)。特别是领域驱动设计(Domain Driven Design,简称 DDD)盛行之后,这种基于贫血模型的传统的开发模式就更原创 2022-02-10 15:06:40 · 349 阅读 · 0 评论 -
设计模式之美-09| 理论七:为何说要多用组合少用继承?如何决定该用组合还是继承?
九、设计模式之美-09| 理论七:为何说要多用组合少用继承?如何决定该用组合还是继承?在面向对象编程中,有一条非常经典的设计原则,那就是:组合优于继承,多用组合少用继承。为什么不推荐使用继承?组合相比继承有哪些优势?如何判断该用组合还是继承?今天,我们就围绕着这三个问题,来详细讲解一下这条设计原则。一.为什么不推荐使用继承?继承是面向对象的四大特性之一,用来表示类之间的 is-a 关系,可以解决代码复用的问题。虽然继承有诸多作用,但继承层次过深、过复杂,也会影响到代码的可维护性。1、举例说明现在要原创 2022-02-08 17:28:46 · 658 阅读 · 0 评论 -
设计模式之美-08| 理论六:为什么基于接口而非实现编程?有必要为每个类都定义接口吗?
八、设计模式之美-08| 理论六:为什么基于接口而非实现编程?有必要为每个类都定义接口吗?一.如何解读原则中的“接口”二字?1、接口是一个设计思想,而不是具体的编程语言。“基于接口而非实现编程”这条原则的英文描述是:“Program to an interface, not an implementation”。我们理解这条原则的时候,千万不要一开始就与具体的编程语言挂钩,局限在编程语言的“接口”语法中(比如 Java 中的 interface 接口语法)。这条原则最早出现于 1994 年 GoF 的原创 2022-02-08 15:28:12 · 443 阅读 · 0 评论 -
设计模式之美-07| 理论五:接口vs抽象类的区别?如何用普通的类模拟抽象类和接口?
七、设计模式之美-07| 理论五:接口vs抽象类的区别?如何用普通的类模拟抽象类和接口?在面向对象编程中,抽象类和接口是两个经常被用到的语法概念,是面向对象四大特性,以及很多设计模式、设计思想、设计原则编程实现的基础。比如,我们可以使用接口来实现面向对象的抽象特性、多态特性和基于接口而非实现的设计原则,使用抽象类来实现面向对象的继承特性和模板设计模式等等。不过,并不是所有的面向对象编程语言都支持这两个语法概念,比如,C++ 这种编程语言只支持抽象类,不支持接口;而像 Python 这样的动态编程语言,既原创 2022-01-25 17:40:43 · 147 阅读 · 0 评论 -
设计模式之美-06| 理论四:哪些代码设计看似是面向对象,实际是面向过程的?
六、设计模式之美-06| 理论四:哪些代码设计看似是面向对象,实际是面向过程的?常见的编程范式或者说编程风格有三种,面向过程编程、面向对象编程、函数式编程,而面向对象编程又是这其中最主流的编程范式。现如今,大部分编程语言都是面向对象编程语言,大部分软件都是基于面向对象编程这种编程范式来开发的。但是在实际的使用过程中,很多人以为把所有代码都塞到类里,自然就是在进行面向对象编程了。实际上,这样的认识是不正确的。有时候,从表面上看似是面向对象编程风格的代码,从本质上看却是面向过程编程风格的。一.哪些代码设计看原创 2022-01-25 11:17:39 · 306 阅读 · 0 评论 -
设计模式之美-05| 理论三:面向对象相比面向过程有哪些优势?面向过程真的过时了吗?
五、设计模式之美-05| 理论三:面向对象相比面向过程有哪些优势?面向过程真的过时了吗?面向对象编程和面向过程变成,其实在很多时候没有那么明确的界限。而且并不是以面向对象语言开发的程序就一定是面向对象的,也有可能是面向过程的。他们只是在用面向对象编程语言,编写面向过程风格的代码而已,并没有发挥面向对象编程的优势。这就相当于手握一把屠龙刀,却只是把它当作一把普通的刀剑来用,相当可惜。详细对比一下面向过程和面向对象这两种编程范式,需要搞清楚下面这几个问题什么是面向过程编程与面向过程编程语言?面向对象原创 2022-01-24 20:54:11 · 179 阅读 · 0 评论 -
设计模式之美-04| 理论二:封装、抽象、继承、多态分别可以解决哪些编程问题?
四、设计模式之美-04| 理论二:封装、抽象、继承、多态分别可以解决哪些编程问题?封装、抽象、继承、多态是面向对象编程及面向对象编程语言的关键特性,对于这四大特性,光知道它们的定义是不够的,我们还要知道每个特性存在的意义和目的,以及它们能解决哪些编程问题。一.封装(Encapsulation)封装主要讲的是如何隐藏信息、保护数据,而抽象讲的是如何隐藏方法的具体实现,让调用者只需要关心方法提供了哪些功能,并不需要知道这些功能是如何实现的。封装也叫作信息隐藏或者数据访问保护。类通过暴露有限的访问接口,授原创 2022-01-23 20:20:59 · 181 阅读 · 0 评论 -
设计模式之美-03|理论一:当谈论面向对象的时候,我们到底在谈论什么?
三、设计模式之美-03|理论一:当谈论面向对象的时候,我们到底在谈论什么?面向对象的四大特性:封装、抽象、继承、多态一.什么是面向对象编程和面向对象编程语言?面向对象编程的英文缩写是 OOP,全称是 Object Oriented Programming。对应地,面向对象编程语言的英文缩写是 OOPL,全称是 Object Oriented Programming Language。面向对象编程中有两个非常重要、非常基础的概念,那就是类(class)和对象(object)。那究竟什么是面向对象编程原创 2022-01-15 19:10:36 · 133 阅读 · 0 评论 -
设计模式之美-02|面向对象、设计原则、设计模式、编程规范、代码重构,这五者有何关系?
二、设计模式之美-02|面向对象、设计原则、设计模式、编程规范、代码重构,这五者有何关系?一.面向对象现在,主流的编程范式或者是编程风格有三种,它们分别是面向过程、面向对象和函数式编程。面向对象这种编程风格又是这其中最主流的。现在比较流行的编程语言大部分都是面向对象编程语言。大部分项目也都是基于面向对象编程风格开发的。面向对象编程因为其具有丰富的特性(封装、抽象、继承、多态),可以实现很多复杂的设计思路,是很多设计原则、设计模式编码实现的基础。关于面向对象有七大知识点需要学习掌握:面向对象的四大特原创 2022-01-14 14:54:04 · 274 阅读 · 0 评论 -
设计模式之美-01|设计模式学习导读
目录一、设计模式之美-01|设计模式学习导读一、设计模式之美-01|设计模式学习导读一.为什么说每个程序员都要尽早地学习并掌握设计模式相关知识?比较空泛的讲,设计模式有以下几个好处:设计模式能让程序员编写出可读性高,易维护,易拓展的代码,避免烂代码。利用好设计模式能让复杂功能的设计的代码可复用性,可拓展性,可维护性,可读性更高。达到高内聚、低耦合的目的。设计模式能提高程序员的自我修养总结下来一句话就是:设计模式主要解决的是扩展和耦合问题。在学习的过程中思考,并深入理解。二. 从哪些维原创 2022-01-13 18:15:26 · 320 阅读 · 0 评论