![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
doubicheng
这个作者很懒,什么都没留下…
展开
-
设计模式学习(七)
依赖倒置原则什么是依赖倒置原则(Dependence Inversion Principle, DIP) 依赖倒置原则的包含如下的三层含义:高层模块不应该依赖低层模块,两者都应该依赖其抽象 抽象不应该依赖细节 细节应该依赖抽象 每一个逻辑的实现都是由原子逻辑组成的,不可分割的原子逻辑就是低层模块(一般是接口,抽象类),原子逻辑的组装就是高层模块。在Java语言中,抽象就是指接口和或抽象类,两者都不能被直接实例化。细节就是实现类,实现接口或继承抽象类而产生的类就是细节,可以被直接实例化。下面转载 2020-08-12 21:20:17 · 146 阅读 · 0 评论 -
设计模式学习(六)
接口分离原则接口隔离原则: 客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。未遵循接口隔离原则的设计:遵循接口隔离原则的设计:根据接口隔离原则拆分接口时,必须首先满足单一职责原则。我们来举个例子来说明接口隔离原则到底对我们提出了什么要求。现在男生对小姑娘的称呼使用频率 最高的应该是“美女”了吧,我们今天来定义一下什么是美女:首先要面貌好看,其次是身材要窈窕,然 后要有气质,当然了,这三者各人的排列顺序不一样,总之要成为一名美女就必须具备:..转载 2020-08-12 21:19:51 · 93 阅读 · 0 评论 -
设计模式学习(五)
里氏替换原则(Liskov Substitution Principle,简称LSP):子类可以替换父类继承有一些优点: 1. 提高代码的重用性,子类拥有父类的方法和属性; 2. 提高代码的可扩展性,子类可形似于父类,但异于父类,保留自我的特性;缺点:侵入性、不够灵活、高耦合 1. 继承是侵入性的,只要继承就必须拥有父类的所有方法和属性,在一定程度上约束了子类,降低了代码的灵活性; 2. 增加了耦合,当父类的常量、变量或者方法被修改了,需要考虑子类的修.转载 2020-08-12 21:19:31 · 136 阅读 · 0 评论 -
设计模式学习(四)
开闭原则开闭原则是指一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。也就是说一个软件实体应该通过扩展来实现变化,而不是通过修改已有的代码来实现变化。我们以书店销售书籍为例来说明什么是开闭原则。其类图如下:书籍及其实现类代码如下:书店类代码:项目开发完了,开始正常卖书了。假如到了双十一,要搞打折活动,上面的功能是不支持的,所以需要修改程序。有三种方法可以解决这个问题:(1)修改接口在IBook接口里新增getOffPrice()方法,专门用于进行打折,所有的实现转载 2020-08-03 20:52:03 · 102 阅读 · 0 评论 -
设计模式学习(三)
单一职责一、单一职责原则的概念Single Responsibility Principle,SRP:一个类被改变的原因不能超过一个,也就是说,一个类只有一个职责,如果职责过多,代码就会臃肿,可读性更差,也更难以维护。其实上单一职责原则和接口隔离原则有一定的关系,接口隔离以后,职责就单一了,实现这个接口的类的职责自然也就单一了。但是接口隔离关注的是抽象层,单一职责关注的是两者兼而有之,偏重于实现。二、为什么要遵守单一职责原则1、提高类的可维护性和可读写性一个类的职责少了,复杂度降低了转载 2020-08-03 20:51:43 · 76 阅读 · 0 评论 -
设计模式学习(二)
二、单例模式单例类只能有一个实例。 单例类必须自己创建自己的唯一实例。 单例类必须给所有其他对象提供这一实例。主要解决:一个全局使用的类频繁地创建与销毁。何时使用:当您想控制实例数目,节省系统资源的时候。如何解决:判断系统是否已经有这个单例,如果有则返回,如果没有则创建。关键代码:构造函数是私有的。应用实例eg:一个班级只有一个班主任。 Windows 是多进程多线程的,在操作一个文件的时候,就不可避免地出现多个进程或线程同时操作一个文件的现象,所以所有文件的处理必须通过唯一原创 2020-07-17 09:44:09 · 127 阅读 · 0 评论 -
设计模式学习(一)
一,简单的工厂模式首先举一个例子:我们现在开了一家饭馆:然后呢我们的大厨可以做三种菜,还有一句潇洒的抱怨:下面客人进场,开始点餐:我们观察上面的代码,虽然很好的完成了任务,但是,我们的三个实现类和和借口紧密的绑定到了一起,这意味着我们的代码耦合出现严重问题,不利于以后的维护,试想顾客点餐需要与后厨大厨直接接触,这肯定是一个不好的体验,那么我们就需要一个传菜员或者一个点餐系统:这个时候,客人再点餐的话就可以直接找到该服务员,让他负责跟后厨沟通:这个转载 2020-06-21 14:49:37 · 170 阅读 · 0 评论