![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
ke-King
这个作者很懒,什么都没留下…
展开
-
简单工厂
简单工厂 什么是简单工厂 **设计原则中有这样一句话:应该针对接口编程,而不是针对实现编程。**而在创建对象的时候,经常使用new关键词,这不正是在针对实现编程嘛!实例化一个具体类会导致代码更脆弱,更缺乏弹性。有些时候具体需要实现哪个类,通常在运行时由一些条件来决定,这样的代码一旦有变化或扩展,就必须重新打开这段代码进行检查和修改。通常这样修改过的代码将造成部分系统更难维护和更新,而且也更容易犯错...原创 2019-02-02 21:38:52 · 172 阅读 · 0 评论 -
组合模式
组合模式 什么是组合模式 树形结构在软件中随处可见,例如操作系统中的目录结构、应用软件中的菜单、办公系统中的公司组织结构等等。使用面向对象设计树形结构模块的时候需要考虑一个问题,树形结构从根节点向外发散的过程中有树枝节点和叶子节点,叶子节点相当于一个单独的对象,树枝节点相当于一个包含多个叶子节点的组合,而我们希望用户在使用的过程中不单可以很直观的体现出部分于整体层次结构,还希望用户可以忽略组合对象...原创 2019-02-13 17:45:30 · 192 阅读 · 2 评论 -
代理模式
代理模式 什么是代理模式 生活中经常遇到需要第三方介入的情景,比如:网上购物需要购物平台这样的第三方;给姑娘写情书需要她的朋友帮忙传递等等。这个第三方在软件设计里面有一个专门的名字叫做代理模式。 代理模式为另一个对象提供一个替身或占位符以控制对这个对象的访问。 那么为什么需要一个代理对象来对实例进行代理控制呢?网络购物找到第三方做代理是因为网络商品看得见摸不到,质量得不到控制,所以需要第三方平台来...原创 2019-02-13 13:47:44 · 196 阅读 · 0 评论 -
策略模式
策略模式 什么是策略模式 在虚拟的网络世界中,购物网站往往根据不同的用户制定不同的报价策略,比如针对新用户显示一个比较优惠的价格来提高新用户的粘度,而对老用户显示一个比较高的价格来赚取更多的利润(俗称杀熟)。针对不同的用户来制定不一样的价格显然需要条件语句来做判断,但是如果将对不同用户不同的价格算法写在一个方法中就会使方法臃肿膨胀,不利于维护,而单独将不同的算法封装为一个私有方法虽然可以解决方法臃...原创 2019-02-23 13:02:44 · 166 阅读 · 0 评论 -
享元模式
享元模式 什么是享元模式 在项目开发的过程中,我们经常会遇到各种各样的池技术,比如数据库连接池、http连接池、netty连接池、redis客户端连接池、jdk线程池等等。 连接池技术通过减少连接或线程的创建、关闭来节约资源提升性能。因为连接或线程都需要相关很多文件、连接资源、操作系统内核资源支持来完成构建,会消耗大量资源,并且创建、关闭会消耗应用程序大量性能。而连接池技术核心是连接或资源的复用。...原创 2019-02-17 16:21:08 · 175 阅读 · 0 评论 -
装饰模式
装饰模式 什么是装饰模式 玩游戏的时候经常想,给我的游戏角色穿这么多衣服,带这么多饰品到底是怎么实现的,好像可以随时随地的装饰我的角色。是怎么设计这种装饰系统的呢? 受到了java.io包的启发,可以使用装饰模式来实现这种效果。 参考io包下的类,可以总结出一些装饰模式的条件: 装饰者和被装饰者对象有相同的超类型 可以用一个或多个装饰者包装一个对象 既然装饰者和被装饰对象有相同的超类型,所以在任...原创 2019-02-05 23:14:41 · 114 阅读 · 0 评论 -
外观模式
外观模式 什么是外观模式 对于很多程序员来说,每天早上到办公室都有一个很繁琐很无聊的工作要做,那就是打开各种电脑软件:编程工具、通讯工具、邮箱、各种文档…这些事情没难度,但是却浪费我们的时间和经历。那我们可不可以像一个办法,一键打开所有需要用到的软件,下班的时候一键关闭呢?这个情形想起了外观模式,也可以叫做门面模式。 外观模式提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口...原创 2019-02-05 15:13:05 · 210 阅读 · 0 评论 -
适配器模式
适配器模式 什么是适配器模式 网络购物让现在的商品交易消除了距离感。有时候我们会买一些国外的商品,比如日本直邮的PS4,但是有一个比较棘手的问题就是两国使用的电线插头规格是不一样的,日本直邮的PS4插头适配不了中国的插座。这时候我们需要在万能的淘宝上买一个转换头,一边可以插在中国的插座上,一边可以接受日本规格的插头,这样我们就可以愉快的打游戏了。这个转换头学名就是适配器,而这种转换的方式就叫做适配...原创 2019-02-05 12:16:33 · 186 阅读 · 1 评论 -
原型模式
原型模式 什么是原型模式 原型模式:当创建给定类的实例的过程很昂贵或很复杂时,就使用原型模式。 原型模式是一种创建型模式,允许用户从一个样板实例中复制出一个内部属性一致的对象,俗称克隆。被复制的实例称为原型。原型模式多用在比较复杂或耗时的情况下,因为复制一个已经存在的实例可以时程序运行更高效。 原型类需要具备两个前提条件: 实现Cloneable接口。在Java语言中,Cloneable接口只有...原创 2019-02-04 15:34:23 · 184 阅读 · 0 评论 -
建造者模式
建造者模式 什么是建造者模式 很多人都喜欢吃麦当劳,肯德基这样的西式快餐,不单是因为方便快捷,而且不同的店做出来的味道基本差不多,满足自己的口味。但是不同的店铺,不同的厨师,做出来的食物口味相差不多,是不是有点神奇。其实明白了其中的原理,实现这样的效果还是挺简单的。要想满足食物的味道在不同人的操作下相差不大,只要对每种食物制定一套规范的工作流程,原料放多少,加热几分钟,放多少调料…不同的人按照这个...原创 2019-02-04 13:39:24 · 179 阅读 · 0 评论 -
单例模式
单例模式 什么是单例模式 有些时候某些对象我们只需要一个,比如说:线程池、缓存、对话框等等。事实上,这些对象只能有一个实例,如果制造出多个实例,就会导致许多问题产生。 为了保证对象只有一个实例,会想到全局变量,使用全局变量来保证单例时,就要在程序一开始就创建好对象。如果这个对象非常消耗资源,而程序在这次的执行过程中又没有用到他,会形成浪费。 虽然全局变量是可以实现单例的需求,但是仿佛有些不完美,单...原创 2019-02-03 22:51:53 · 85 阅读 · 0 评论 -
抽象工厂模式
抽象工厂模式 什么是抽象工厂模式 在工厂方法模式中,使用一个工厂创建一个产品。但是有时候我们需要一个工厂能够提供一系列的产品对象,而不是单一的。这时候可以将工厂方法模式扩展一下,以前工厂方法抽象创建者工厂提供一个抽象方法,继承抽象创建者的具体创建者工厂继承该抽象方法,实现具体的创建细节,获取单一的产品实例。如果抽象创建者工厂提供多个抽象方法,那么继承该接口的具体创建者工厂可以实现多个产品的创建。这...原创 2019-02-03 22:01:14 · 127 阅读 · 0 评论 -
工厂方法模式
工厂方法模式 什么是工厂方法模式 设计原则中有一句话:类应该对扩展开放,对修改关闭。 对于简单工厂,是将创建产品的细节抽取封装到一个工厂类中,如果在后来的扩展中又加入了新的产品,就需要对工厂类创建产品的方法进行修改,这样就违背了开-闭原则。 那么怎样设计工厂类才能使每次新增加的产品不会违背开闭原则,并且可以灵活的对系统进行扩展呢?我们需要解决以下几个问题: 只能对现有的工厂类进行扩展,不能修改已...原创 2019-02-03 11:27:00 · 1626 阅读 · 0 评论 -
桥接模式
桥接模式 什么是桥接模式 面向对象的三大基本特征是封装、继承和多态。在刚刚接触到继承的时候感觉它即新颖又强大,所以只要可以用,就都用上继承。 但事实上,很多情况用继承会带来很多麻烦。比如,对象的继承关系在编译时期就定义好了,所以无法在运行时改变从父类继承的实现。**子类的实现与它的父类有非常紧密的依赖关系,以至于父类实现中的任何变化必然会导致子类发生变化。**当你需要复用子类的时候,如果继承下来的...原创 2019-02-14 14:10:41 · 144 阅读 · 0 评论