2.4 设计模式
双斜杠少年
希望经记录下来自己学习过程,并和大家一块分享
展开
-
一文分清23种设计模式-设计模式及PK小结
设计模式是为了可重用代码(可重用)、让代码更容易被他人理解(可读性)、保证代码可靠性。设计模式不是一种方法和技术,而是一种思想。1. OOP三大基本特性封装封装,也就是把客观事物封装成抽象的类,并且类可以把自己的属性和方法只让可信的类操作,对不可信的进行信息隐藏。继承继承是指这样一种能力,它可以使用现有的类的所有功能,并在无需重新编写原来类的情况下对这些功能进行扩展。多态多态指一个类实例的相同方法在不同情形有不同的表现形式。具体来说就是不同实现类对公共接口有不同的实现方式,但这些操作可以通过相原创 2020-11-18 14:25:02 · 1849 阅读 · 1 评论 -
设计模式之中介者模式
场景一个公司的“进销存“买IBM电脑系统设计,销售部门要反馈销售情况,畅销的就多采购,滞销就不采购;销售前要确定库存有货才能销售。采购部门要根据销售情况和库存情况进行采购。库存情况要根据销售情况和采购情况维护库存量。根据库存量来决定是否要打折出售。“进销存“三个模块都有自己的香味,并且与其他的模块之间行为产生关联,类似我们的办公室“同事“各干各的活,但是彼此之间有依赖、交叉,于是彼此之间就...原创 2017-08-09 00:39:20 · 769 阅读 · 0 评论 -
单例模式-一问到底
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式。在 GOF 书中给出的定义为:保证一个类仅有一个实例,并提供一个访问它的全局访问点。单例模式一般体现在类声明中,单例的类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。单例模式有以下两个优点:在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例(比如网站首页页面缓存)。避免对资源的多重原创 2020-10-25 20:22:33 · 499 阅读 · 0 评论 -
命令模式
命令模式小故事:经过多年的努力,终于我成为了一名项目经理,现在我要带着我的团队去接活了。项目员工分为 需求组(RequirementGroup,RG)、美工组(PageGroup,PG)、代码组(CodeGroup,CG)。刚开始,客户也就是甲方,很乐意和我们每个组探讨,比如和需求组讨论需求、和美工讨论页面、和代码组讨论实现,告诉他们增删改查的各种内容等。这是比较常见的甲乙方合作模式,甲方深入到乙方原创 2017-10-24 17:06:13 · 1093 阅读 · 0 评论 -
工厂方法模式
工厂模式定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。东汉《风俗通》记录了一则神话故事:“开天辟地,未有人民,女娲搏黄土做人”,讲述的内容就是大家非常熟悉的女娲造人的故事。开天辟地之初,大地上并没有生物,只有苍茫大地,纯粹而洁净的自然环境,寂静而又寂寞,于是女娲决定创造一个新物种(即人类)来增加世界的繁荣,怎么制造呢? 别忘了女娲是神仙,没有办不原创 2016-09-06 23:51:45 · 1134 阅读 · 0 评论 -
工厂方法模式的扩展
工厂方法模式有很多扩展,而且与其他模式结合使用威力更大,下面将介绍几种扩展。1. 缩小为简单工厂模式我们这样考虑一个问题:一个模块仅需要一个工厂类,没有必要把它产生出来,使用静态的方法就可以了,根据这一要求,我们把上例中的AbstarctHumanFactory修改一下,类图如我们在类图中去掉了AbstractHumanFactory抽象类,同时把createHuman方法设置为静态 类型,简化了原创 2016-09-07 00:17:44 · 1410 阅读 · 2 评论 -
抽象工厂方法模式
讲了女娲造人的故事。人是造出来了,世界也热闹了,可是低头一看,都是清一色的类型,缺少关爱、仇恨、喜怒哀乐等情绪,人类的生命太平淡了,女娲一想,猛然一拍脑袋,忘记给人类定义性别了,那怎么办?抹掉重来,于是人类经过一次大洗礼,所有的人种都消灭掉了,世界又是空无一物,寂静而又寂寞。由于女娲之前的准备工作花费了非常大的精力,比如准备黄土、八卦炉等,从头开始建立所有的事物也是不可能的,那就想在现有的条件下重新原创 2016-09-07 00:35:42 · 686 阅读 · 0 评论 -
代理模式的扩展
设计模式中的普通代理和强制代理也是类似的一种结构,普通代理就是我们要知道代理的存在,也就是类似的GamePlayerProxy这个类的存在,然后才能访问;强制代理则是调用者直接调用真实角色,而不用关心代理是否存在,其代理的产生是由真实角色决定的,这样的解释还是比较复杂,我们还是用实例来讲解。普通代理它的要求就是客户端只能访问代理角色,而不能访问真实角色,这是比较简单的。我们以上面的例子作为扩展,我自原创 2016-09-07 23:09:59 · 1125 阅读 · 0 评论 -
代理模式
定义 :为其他对象提供一种代理以控制对这个对象的访问。玩了一段时间的网络游戏,游戏名就不说了,反正就是打怪、升级、砍人、被人砍,然后继续打怪、升级、打怪、升级……我花了两个月的时间升到80级,已经很有成就感了,但是还会被人杀死,高手到处都是,GM(Game Master,游戏管理员)也不管,对于咱这种非RMB玩家基本上都是懒得搭理。在这段时间我是体会到网络游戏的乐与苦,参与家族(工会)攻城,胜利后那原创 2016-09-07 22:57:27 · 730 阅读 · 0 评论 -
模板方法模式
假设公司是做玩具模型生产的,公司的主要业务就是把实物按照一定的比例缩小或放大,用于试验、分析、量化或者是销售,等等, 需求: 现在负责在一个星期的时间把这批10万车模(注:车模是车辆模型的意思,不是香车美女那个车模)建设完成……”只做最基本的实现,不考虑太多的问题,怎么样?”老大又把我弹回去了。 既然领导都说了,不考虑扩展性,那好办,先按照最一般的经验设计类图,如图10-1所示。非常简单的实现原创 2016-09-07 23:24:04 · 749 阅读 · 0 评论 -
原型模式
场景假设现在我需要发送1000W封邮件,我使用多线程发送邮件(单线程的话,发完邮件我也入土了,时间太久。),我创建了一个邮件对象,每次给邮件对象赋值,然后发送出去,但是使用多线程,就遇到了线程安全问题,当线程一,创建好邮件对象后,还没有进行发送邮件操作时,线程二 又对邮件对象进行了赋值,然后线程一开始发送邮件,此时线程一发送的邮件对象,其实已经是线程二赋值的邮件对象了。那么怎么通过设计模式解决这个问原创 2017-07-18 22:42:12 · 711 阅读 · 0 评论 -
设计模式导读
什么是设计模式。 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。(简单说设计模式就是经验的总结)这个东西可以重复的使用相当于十个模型,比如说我想做个蛋糕,我看到一个巧克力蛋糕特别漂亮,我想做一个类似的蛋糕,我只要有蛋糕这个模型就可以了。我就可以做出一样的蛋糕出来。同理设计模式就类似这样一个东西。我模仿着它就能做出符合某种规则的东西来。其原创 2016-08-14 13:49:20 · 1484 阅读 · 0 评论 -
敏捷开发
敏捷开发是一种以人为核心,以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,小周期可完成的任务,这样的一个周期就是一次迭代的过程;同时每一次迭代都可以生产或开发出一个可以交付的软件产品。在此过程中软件一直处于可使用状态。为什么说是以原创 2016-03-01 10:30:42 · 782 阅读 · 0 评论