设计模式
失去的都是人生
天道酬勤
展开
-
(九)单例模式的几种实现方式
参考链接:https://www.runoob.com/design-pattern/singleton-pattern.html一、懒汉式(线程不安全)懒汉的意思就是我不生成实例,到使用时才生成第一个实例。实现简单,但因为取唯一实例时未加锁,因此不支持多线程。public clsaa Singleton{ private static Singleton instanc...原创 2019-10-16 23:09:37 · 262 阅读 · 0 评论 -
(八)单例模式
一、概念一个类在程序中仅有单个对象存在,不会存在多个这个类的对象。保证一个类仅有一个实例,并提供一个访问它的全局访问点。主要解决一个全局使用的类频繁地创建与销毁。需要自己创建自己的实例并提供给其他类使用,构造函数写为私有。二、例子单例模式中保存了唯一的自己这个类的静态实例,并将构造函数设为私有,对外提供了静态的getInstance函数。public class Sing...原创 2019-10-13 23:56:30 · 141 阅读 · 0 评论 -
(七)观察者模式
一、概念观察者模式描述对象之间一对多的关系,当一个对象发生变化时,所有的依赖它的对象(观察者对象)都会得到通知并自动更新。二、例子如上所示,观察者模式需要有三个类:一个Subject,即发布者,其中保存订阅者的列表和订阅内容,其中有添加观察者函数attach,和设置与获取状态函数setState和getState,以及通知函数notifyAllObservers;Observer接...原创 2019-10-13 23:38:17 · 132 阅读 · 0 评论 -
(六)装饰者模式
一、概念装饰者模式就是对现有类的功能进行扩展,相比继承更加灵活一些。二、例子 图中ShapeDecorator为装饰者抽象类,里面有成员shape(也可以写到RedShapeDecorator中,图中在ShapeDecorator和RedShapeDecorator中仅有一处存在shape即可,图中两处均有,个人觉得有误)、接口的函数draw、以及构造函数来对...原创 2019-10-11 23:55:47 · 118 阅读 · 0 评论 -
(五)适配器模式
一、概念顾名思意,是用来对两个不同的接口进行适配的一种设计模式,将一个接口转换成需要的另一个接口。一般用于现有类的接口不满足需求的情况下,通过适配器继承或依赖已有对象实现想要的目标接口,解决现有运行项目的问题。二、基本实现如上图,在原有的基础上,要想在接口A、B之间进行转换,那么适配器只需要继承接口A,并引入变量类B,在实现的接口A函数中调用B的接口进行操作即可。看了几个其他的适配...原创 2019-10-09 22:20:26 · 90 阅读 · 0 评论 -
(四)抽象工厂模式
一、概念抽象工厂模式就是能够生成工厂类的模式。类似于在工厂模式上再加一层封装,负责生成各种各样的工厂,可以视为建厂子的模式。二、抽象工厂的使用当一个工厂模式中生产的类有多重组合方式,例如工厂生产水果茶,A厂产乌龙蜜桃茶,B厂产铁观音樱桃茶,因此在抽象工厂类(作为父类)中写入茶+水果的组合,至于具体的哪种茶和哪种水果则交给由抽象工厂派生出来的A厂(子类)和B厂(子类)去搞定。下面一段...原创 2019-10-08 22:40:35 · 141 阅读 · 0 评论 -
(三)工厂模式
国庆期间去东北参加了朋友的婚礼,时光飞逝呀,人生漫长又短暂,要给自己找点有乐趣的事情去做。以下实践来自实验楼,链接:https://www.shiyanlou.com/courses/100/learning/?id=865,什么是工厂模式?工厂一般指生产特定产品的平台,那么类似的,工厂模式可以将其类比为一个工厂,指生产特定类型的对象的一种模式。工厂模式封装了创建对象的细节,使用者只使...原创 2019-10-07 22:18:55 · 89 阅读 · 0 评论 -
(二)设计模式分类
实验楼设计模式的课程链接(不是广告,这个免费的):https://www.shiyanlou.com/courses/100目前这些先有个概念,毕竟后面才能理解。三类设计模式:创建型模式,用于创建对象,一是将系统使用的具体类封装起来,二是隐藏这些具体类的实例创建和结合的方式。共 5 种:工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,主要处理类和对象的组合,...原创 2019-09-29 22:28:54 · 78 阅读 · 0 评论 -
(一)初识设计模式
利用闲时间整理一下设计模式,目标设定最迟两个月(2019年11月30日)完成吧,目前大计划还没有^-^。本周先入个门。原则:1.开放封闭原则对扩展开放,对修改封闭。当有新功能时,在原有基础上对代码进行扩展,而不是修改原有代码,保证软件的稳定性。尤其是抽象的类和接口是不允许修改的,因此在设计之初就要考虑好如何去抽象。2.里氏代换原则子类对象可以代替任何基类对象出现的地方,反之...原创 2019-09-29 21:56:08 · 102 阅读 · 0 评论