设计思想
文章平均质量分 91
不全
这个作者很懒,什么都没留下…
展开
-
面向对象思想总结(值得一读)
一、面向过程的思想和面向对象的思想 面向对象和面向过程的思想有着本质上的区别,作为面向对象的思维来说,当你拿到一个问题时,你分析这个问题不再是第一步先做什么,第二步再做什么,这是面向过程的思维,你应该分析这个问题里面有哪些类和对象,这是第一点,然后再分析这些类和对象应该具有哪些属性和方法。这是第二点。最后分析类和类之间具体有什么关系,这是第三点。 面向对象有一个非常重要的设计思维:合适的方法应该出现在合适的类里面。 二、简单理解面向对象 就是在程序里面首先分解出来的应该是注意不再是一步一...转载 2022-04-20 11:48:45 · 2650 阅读 · 1 评论 -
面向对象实践之路-提升抽象层次
多少次有人问我如何构建一个比较好的类阶层次,如何使用面向对象进行设计,或者问为什么我看了那么多面向对象和设计模式的书一到使用的时候却总是写出面向过程的代码。每当我碰到这些问题的时候我总是回答,其实我也不知道。真的,其实我也不知道。 虽然我总是张口闭口面向对象,总是看到一个问题后就谈这个有点XXX模式的影子,但大部分时候碰到一个问题我还是一片空白,不知道如何去分析设计和实现出好的面向对象。所以,我只想谈谈我是如何实践面向对象的,这对我自己有用但不一定对你有用。嗯,回到正题。 回顾编程方法的发展史,我想不外转载 2021-03-26 21:10:46 · 310 阅读 · 0 评论 -
领域模型和设计类图的区别
摘要 本文通过对一个“学生选课系统”示例的简要分析与设计,说明UML图之一类图的两种作用及存在形式,以期借此澄清有些朋友可能对类图存在的误解与困惑。 前言 在OOA与OOD大行其道的今天,UML在系统分析与设计中得到了广泛的采用。而在UML的9种图中,类图是最重要也是使用最普遍的图之一。但是,在与一些朋友,特别是初学者的聊天当中,我发现很多朋友对类图的作用及使用方法存在一定的误解和困惑。于是我写下这篇文章,希望本文能在一定程度上帮助这些朋友更好的认识和使用类图。当然,由于我对UM...转载 2021-03-23 21:12:34 · 3555 阅读 · 0 评论 -
适配器(Adapter)模式
适配器(Adapter)模式:结构型模式 适配,即在不改变原有实现的基础上,将原先不兼容的接口转换为兼容的接口,把一个类的接口变换成客户端所期待的另一种接口,从而使原本接口不匹配而无法一起工作的两个类能够在一起工作;该模式是作为两个不兼容的接口之间的桥梁,它结合了两个独立接口的功能。这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。 动机 在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境中应用,但是新环境要求的接口是这些现存对象所不满足的。 ...原创 2020-09-24 11:40:39 · 233 阅读 · 0 评论 -
原型(Prototype)模式
原型(Prototype)模式:创建型模式 使用原型实例指定创建对象的种类,然后通过拷贝这些原型实例来创建新的对象。 动机 在软件系统中,经常面临着“某些结构复杂的对象”的创建工用;由于需求变化,这些对象经常 面临着剧烈变化,但是它们却拥有比较稳定一致的接口。 如何应对这种变化?如何向客户端程序隔离出这些易变对象,从而使得依赖这些易变对象的客户 端程序不随着需求改变而改变? 要点 Prototype模型同样用于隔离对象的使用者和具体类之间的紧耦合...原创 2020-09-22 16:30:20 · 183 阅读 · 0 评论 -
面向对象
面向对象(Object Oriented,OO)是当前计算机界关心的重点,它是90年代软件开发方法的主流。面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围。如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。 谈到面向对象,这方面的文章非常多。但是,明确地给出对象的定义或说明对象的定义的非常少——至少我现在还没有发现。其初,“面向对象”是专指在程序设计中采用封装、继承、抽象等设计方法。可是,这个定义显然不能再适合现在情况。面向对象的...转载 2020-09-21 11:38:25 · 751 阅读 · 0 评论 -
抽象工厂模式-与-工厂方法模式区别
定义区别: 工厂模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类 抽象工厂模式:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类 区别在于产品,如果产品单一,最合适用工厂模式,但是如果有多个业务品种、业务分类时,通过抽象工厂模式产生需要的对象是一种非常好的解决方式。再通俗深化理解下:工厂模式针对的是一个产品等级结构 ,抽象工厂模式针对的是面向多个产品等级结构的。 再来看看工厂方法模式与抽象工厂模式对比: 举个例子说明下: 用种蔬菜的例子来说明事实,最初的时候,由于规模转载 2020-09-21 10:58:37 · 139 阅读 · 0 评论 -
生成器(Builder)模式
生成器(Builder)模式:创建型模式 将一个复杂的对象的构建(builder)和它的表示(复杂对象生成的director类)分离,使得同样的构建过程可以创建不同的表示。核心是给指导者(Director)一个生成器,但具体方式不指定。 动机 在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成,由于需求的变 化,这个复杂对象的各个部分子对象经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。 如何应对这种变化?如何提供一种“...原创 2020-09-19 15:00:58 · 196 阅读 · 0 评论 -
简单工厂模式、工厂方法模式、抽象工厂模式
简单工厂模式:创建型模式 也叫静态工厂模式,它是用来实例化目标类的静态类。一个Simple Factory生产成品,而对客户端隐藏产品生产的细节,实际上是定义一个产品接口,并透过特定静态方法来建立成品。 就是由一个工厂类根据传入的参数决定创建出哪一种产品类的实例。一个工厂类封装了所有类的实例化。在程序设计中不涉及到具体子类,达到封装效果,也就减少错误修改的机会;如:具体事情做的越多,越容易犯错误,相反,官做得越高,说出的话越抽象,犯错误的可能性就越少。 简单工厂模式根据提供给它的数据,...原创 2020-08-25 16:22:28 · 252 阅读 · 0 评论 -
单例模式
什么是单例模式 对于一个软件系统的某些类而言,无需创建多个实例。如:Windows任务管理器,只能打开一个。确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。线程池、缓存、对话框、处理偏好设置和注册表、日志对象、打印机和显卡等设备的驱动一般都是唯一实例即可。 定义:为了节约系统资源,有时需要确保系统中某个类只有唯一一个实例,当这个唯一实例创建成功后,我们无法再创建一个同类型的其它对象,所有的操作都只能基于这个唯一实例;为了确保对象的唯一性,我..原创 2020-08-25 16:17:10 · 210 阅读 · 0 评论 -
面向对象之设计原则简记
面向对象的三大特性: 封装:隐藏内部实现,对外暴露接口,侧重于对象的描述; 继承:复用模块或代码; 多态:一个对象具有多种状态行为,改变对象的状态; 三大特性之间的关系,继承依赖封装,多态依赖继承,即 封装<继承<多态;继承和多态侧重于对象之间的关系。 我们为什么要使用面向对象?怎样使用三大特性实现好的“面向对象”?应该遵循怎样的规则实现面向对象? 隔离变化:宏观,能更适应软件的变化,将变化所带来的影响化为最小; 各司其职:微观,强调各个类的责任,新增的类不会影响原来的类的改变;如原创 2020-08-14 11:10:02 · 175 阅读 · 0 评论 -
由单例模式学到:静态构造函数和静态字段
编译器在编译的时候,会事先分析所需要的静态字段,如果这些静态字段所在的类有静态的构造函数,则忽略静态字段的初始化,否则先进行静态字段的初始化。对类的静态成员初始化的顺序取决于在Main函数中的引用顺序,先引用到的先进行初始化,但如果类的静态成员的初始化依赖于其它类的静态成员,则会先初始化被依赖类的静态成员。而带有静态构造函数的类的静态字段,只有在引用到的时候才进行初始化。 接下来,用实例来对以上的一段总结性的描述逐句分析: 1、编译器在编译的时候,会事先分析所需要的静态字段,如果这些静态字段所在的类有静转载 2020-07-15 17:02:03 · 220 阅读 · 0 评论 -
迭代器模式
什么是迭代器模式 迭代器模式是针对集合对象而生的,对于集合对象而言,肯定会涉及到对集合的添加和删除操作,同时也肯定支持遍历集合元素的操作,我们此时可以把遍历操作放在集合对象中,但这样的话,集合对象既承担太多的责任了,面向对象设计原则中有一条就是单一职责原则,所有我们要尽可能地分离这些职责,用不同的类取承担不同的责任,迭代器模式就是用迭代器类来承担遍历集合的职责。 定义:迭代器模式提供了一种方法顺序访问一个聚合对象中的各个元素,而又无需暴露该对象的内部实现,这样既可以做到不暴露集合的内部结构,又可让外部代原创 2020-07-10 16:23:54 · 120 阅读 · 0 评论 -
观察者模式
定义 观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。而观察者模式属于行为型模式,行为型模式关注的是对象之间的通讯,观察者模式就是观察者和被观察者之间的通讯。 比如有个“天气中心”的具体目标A,专门监听天气变化,而有个显示天气的界面的观察者B,B就把自己注册到A里,当A触发天气变化,就调度B的更新方法,并带上自己的上下文。 注意:观察者模式有一个别名叫“订阅—发布模式”,该模式容易与观察者模式搞混淆。报纸大家都订过吧,当你订阅了一份报纸,每天原创 2020-07-10 11:35:19 · 137 阅读 · 0 评论 -
原型模式
定义:通过复制现有实例来创建新的实例,无需知道相应类的信息。 简单地理解,其实就是当需要创建一个指定的对象时,我们刚好有一个这样的对象,但是又不能直接使用,我会clone一个一毛一样的新对象来使用;基本上这就是原型模式。关键字:Clone。 1 深拷贝和浅拷贝 浅复制:将一个对象复制后,基本数据类型的变量都会重新创建,而引用类型,指向的还是原对象所指向的。 深复制:将一个对象复制后,不论是基本数据类型还有引用类型,都是重新创建的。简单来说,就是深复制进行了完全彻底的复制,而浅复制不彻底。clone明原创 2020-07-09 15:00:30 · 107 阅读 · 0 评论 -
理解简单工厂模式和策略模式的区别
刚刚接触设计模式的时候,我相信单例模式和工厂模式应该是用的最多的,毕竟很多的底层代码几乎都用了这些模式。自从接触了一次阿里的公众号发的一次文章关于 DDD的使用 以后,就逐渐接触了策略模式。现在在项目中运用最多的也是这几种设计模式了,用了设计模式给我的感受就是感觉代码没那么冗余了,再注入一点贫血,充血模型之后,感觉在 service 层面代码看上去很舒服很简洁。 首先,我个人感觉策略模式和我们常说的微服务我觉得思想上很像,尤其记得当时介绍DDD时候的举例说的是关于银行的转账案例,用的事务和领...转载 2020-07-07 16:58:08 · 242 阅读 · 0 评论 -
二、IoC 容器基本原理 ——跟我学Spring3
2.2.1 IoC容器的概念 IoC容器就是具有依赖注入功能的容器,IoC容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。应用程序无需直接在代码中new相关的对象,应用程序由IoC容器进行组装。在Spring中BeanFactory是IoC容器的实际代表者。 Spring IoC容器如何知道哪些是它管理的对象呢?这就需要配置文件,Spring IoC容器通过读取配置文件中的...转载 2020-04-20 16:11:47 · 80 阅读 · 0 评论 -
一、IoC 之 2.1 IoC基础 ——跟我学Spring3
1.1.1 IoC是什么 Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。如何理解好Ioc呢?理解好Ioc的关键是要明确“谁控制谁,控制什么,为何是反转(有反转就应该有正转了),哪些方面反转了”,那我们来深入分析一下: ●谁控制谁,控制什么:...转载 2020-04-20 16:07:24 · 143 阅读 · 0 评论