◆【架构的艺术】
皮皮的雅客
这个作者很懒,什么都没留下…
展开
-
备忘录模式——Memento
文章目录案例展示——Memento怎么用?深入分析——Memento是什么?Memento的定义Memento的几种扩展形式1. clone方式的备忘录2. 多状态的备忘录模式3. 多备份的备忘录4. 更加安全的备忘录Memento的使用场景Memento的注意事项参考案例展示——Memento怎么用? 在电影中,月光宝盒是一种可以穿越时空的宝物,持有月关宝盒的人可以去到任意的时间,也可以迅...原创 2018-11-18 19:53:38 · 335 阅读 · 0 评论 -
模板方法模式——TemplateMethod
管中窥豹——模板方法怎么用? 在谈什么是模板方法模式之前,我想我们还是从死板的教条定义中抽离出来,通过一个小例子来看看什么是模板方法模式,以及它能给我们带来怎样的便利。 假如有一家宝马车制造厂商想对一批宝马车进行测试,这里暂且定为要测试的车型为X5和X6。根据这个要求,其实我们可以很容易的得到如下设计:要有一个共同的抽象类BaomaModel,在这个类中定义了宝马车所具...原创 2018-09-13 18:34:30 · 250 阅读 · 0 评论 -
迭代器模式——Iterator
关于迭代器(Iterator) 迭代器这个名词想来我们已经不陌生了,在集合中我们就学习过迭代器,并掌握了如何使用迭代器来遍历集合中的元素。例如:List<String> list = new ArrayList<>();list.add("anc");list.add("cvl");list.add("u原创 2018-08-13 11:02:27 · 264 阅读 · 0 评论 -
适配器模式——Adapter
说说啥是适配器 适配器模式是设计模式中比较好理解的设计模式之一。适配器,通俗来说就有点像生活中插座的转接头,你有一个三孔插座,但是你的电视插头却是两孔的,这时加上一个转接头就能让插头正常工作。其实,适配器模式的思想也就源于此,在面向对象的代码中,有很多可复用的类(经过反复测试可用),但是有时候我们去使用的时候却必须去改动一些地方,这就需要我们重新去测试,如此反复浪费时间与效率,于是大佬...原创 2018-08-13 10:58:19 · 245 阅读 · 0 评论 -
深入理解单例设计模式
为什么静态内部类的单例模式是最推荐的? 如何在反射的情况下保证单例 如何在反序列化中保证单例 为了回答上面三个问题,下面将逐步进行分析1. 饿汉式——线程安全的单例模式public class Singleton1 { private static Singleton1 instance = new Singleton1(); p...原创 2018-08-13 10:57:21 · 225 阅读 · 0 评论 -
面向对象六大原则——依赖倒置原则
什么是依赖倒置原则(Dependence Inversion Principle, DIP) 依赖倒置原则的包含如下的三层含义: - 高层模块不应该依赖低层模块,两者都应该依赖其抽象 - 抽象不应该依赖细节 - 细节应该依赖抽象 每一个逻辑的实现都是由原子逻辑组成的,不可分割的原子逻辑就是低层模块(一般是接口,抽象类),原子逻辑的组装就是高层模块。在Java语言中,抽象就是指...原创 2018-08-13 10:56:49 · 43305 阅读 · 17 评论 -
面向对象六大原则——里式替换原则
说说继承 继承是面向对象三大特性之一,是一种非常优秀的语言机制,它有如下有点: - 代码共享,减少创建类的工作量,每个子类都拥有父类的方法和属性 - 提高代码的重用性 - 子类可以形似父类 - 提高代码的可扩展性 - 提高产品或项目的开放性 继承有它的优点,但是也有一些致命的缺点: - 继承具有侵入性,只要子类继承了父类,那么子类必须拥有父类的所有属性和方法 - 降低...原创 2018-08-13 10:56:18 · 1548 阅读 · 2 评论 -
面向对象六大原则——开闭原则
什么是开闭原则(Open Close Principle, OCP) 开闭原则是Java中最基础的设计原则,它指导我们如何建立一个稳定的,灵活的系统。 - 定义:一个软件实体如类,模块和函数应该对扩展开放,对修改关闭。 - 为什么使用开闭原则: 在程序的生命周期内,因为变化,升级和维护等原因需要对程序原有的代码进行修改时,可能会给代码引入错误,增加项目开发测试的复杂度,也可能会使我...原创 2018-08-13 10:55:33 · 2646 阅读 · 0 评论 -
面向对象六大原则——接口隔离原则
什么是接口隔离原则(Interface Segregation Principle, ISP) 接口对于Java开发者来说都不陌生,它几乎存在于每一个Java程序中,是抽象的代名词。在讲接口隔离原则之前,先说说接口,接口分为以下两种: - 实例接口(Object Interface): 在Java中声明一个类,然后用new关键字产生一个实例,是对一个类型的事物的描述,这就是一种接口...原创 2018-08-13 10:54:15 · 21558 阅读 · 7 评论 -
面向对象六大原则——迪米特法则
什么是迪米特法则(Law of Demeter, LoD) 迪米特法则也可以称为最少知识法则(Least Knowledge Principle, LKP)。它们都描述了一个规则:一个对象应该对其他对象有最少的了解。通俗来说,一个类应该对自己需要耦合或调用的类知道最少,也就是对于被依赖的类,向外公开的方法应该尽可能的少。 迪米特法则还有一种解释:Only talk to your ...原创 2018-08-11 22:24:29 · 2597 阅读 · 0 评论 -
工厂方法模式——FactoryMethod
工厂方法模式或许是程序员在日常开发过程中最常听到或用到的设计模式之一了。但是,我们真的了解它的来龙去脉吗?案例展示——FactoryMethod很简单 我们来考虑这样一种场景:有一家宝马汽车制造厂商需要生产一批宝马汽车,在这批宝马汽车中,需要生产X5系列1000辆,X6系列5000辆,X7系列10000辆,根据这个需求我们可以使用工厂方法模式来完成,类图设计如下:具...原创 2018-09-13 18:35:12 · 475 阅读 · 1 评论 -
抽象工厂模式——AbstractFactory
抽象工厂模式是工厂模式的升级版本,在有多个业务品种,业务分类时,通过抽象工厂模式产生需要的对象将更为高效。案例展示——AbstractFactory怎样用? 接着工厂方法模式那个案例,我们继续进行探索。考虑这样一种业务场景:有一天宝马汽车公司由于赚了大钱,财大气粗,打算把经营的不怎么样的奔驰公司给收购了,以达到拓展业务扩大生产规模的目的。好事成双,在扩大规模的同时,公司的科...原创 2018-09-13 18:36:14 · 318 阅读 · 0 评论 -
建造者模式——Builder
案例展示——Prototype怎么用? 原型模式在开发过程中或许名头没有单例模式,工厂方法模式等设计模式那么响亮,但却是一个应用场景很多的设计模式,下面就通过一个案例来了解这个设计模式是什么。 随着互联网时代的来临,百花齐放,百家争鸣,各种各样的业务都依托互联网而发展的越来越繁荣。而诸多电信公司无疑是互联网产业中属于风口浪尖的产业,因为它们掌控互联网中最核心的源动力——流量。虽然卖流量卖话费...原创 2018-09-17 18:35:38 · 234 阅读 · 0 评论 -
门面模式——Facade
文章目录案例展示——Facade怎么用?深入分析——Facade是什么?Facade的定义Facade类不参与子系统的业务逻辑Facade的优点Facade的缺点Facade的使用场景参考案例展示——Facade怎么用? 我们来模拟一下写信寄信的场景:首先要在纸上写上内容、然后在信封上写好收件人和地址、其次封好信封、最后将信件寄出去。在信息技术不发达的年代,上面的所有操作都需要个人自己去完成...原创 2018-11-13 13:54:54 · 350 阅读 · 0 评论 -
观察者模式——Observer
文章目录案例展示——Observer怎么用?深入分析——Observer是什么?Observer的定义Observer的扩展Observer的优点Observer的缺点Observer的应用场景在项目中使用Observer参考案例展示——Observer怎么用? 观察者模式是一种非常通用的模式,以至于JDK都整合了这个设计模式,将其开放成编程接口供程序员使用:java.util.Observ...原创 2018-11-13 13:54:16 · 322 阅读 · 0 评论 -
策略模式——Strategy
案例展示——Strategy怎么用? 了解一点历史的人都知道商鞅变法,正是由于商鞅变法,奠定了秦国强大的根基,使秦国从一个最弱小的战国迅速成为一个超强战国,奋六世之余烈,终于在秦始皇手上一统天下。可以说,没有商鞅变法,就没有强大的秦国,或许也可以断言,天下将不会由秦朝统一。那么商鞅变法为什么会有这么大的规律呢,现在我们从软件的设计的角度来看看商鞅变法的威力,下面是类图设计:分析上面的类图:...原创 2018-10-29 21:05:19 · 400 阅读 · 0 评论 -
装饰模式——Decorator
文章目录案例展示——Decorator怎么用?深入分析——Decorator是什么?Decorator的定义Decorator的优点Decorator的缺点Decorator的应用场景参考案例展示——Decorator怎么用? 现在有这样一种场景:关于二手车我们都不会陌生,或多或少我们都会有接触。那你有没有想过,如何才能把一辆二手车卖出好的价钱呢?是直接和买主摊牌二手车的所有性能参数,还是会...原创 2018-10-29 18:11:58 · 277 阅读 · 0 评论 -
责任链模式——ChainOfResponsibility
案例展示——ChainOfResponsibility怎么用? 考虑这样一个场景:现有一家工厂(大型综合一体化工厂),从原料生产到成品出产都由这家工厂独立完成。为了便于管理与提高效率,只能明确,工厂领导层决定将工厂一分为三:原料厂负责原料的生产和购买,零件制造厂负责零部件的制造,装配厂负责装配出厂。同时为了便于监管,督促各大工厂之间保质保量的完成任务,领导层委派很多监察者去各大工厂监察,每个监...原创 2018-10-10 11:22:20 · 350 阅读 · 0 评论 -
命令模式——Command
案例展示——Command怎么用? 现在有这样一个业务场景:外包公司接了一个大单——做一个汽车销售网站,这可把公司高兴坏了,近年来外包公司崛起,行业内竞争压力巨大,好不容易有一个大订单一定要把它做好。于是公司专门成立了一个项目小组去负责这件事,该项目小组主要由:需求组,美工组,代码组三个组组成,汽车公司那边外派了一个干员过来常驻公司,主要是和项目小组中的每个组进行沟通交流,以期能够提高效率,尽...原创 2018-09-30 22:03:34 · 447 阅读 · 0 评论 -
中介者模式——Mediator
案例展示——Mediator怎么用? 我们先来看这样一种场景:有一家宝马4s店,下面有三个部门:销售部门,采购部门,库存管理部门,这三个部门的职责分别是:采购部门: 负责宝马汽车的采购。与销售部门沟通销售情况:销售的好多进几辆车,销售不好就少进几辆车;与库存管理部门沟通库存情况:扩大库存或者减少库存库存管理部门: 负责库存管理。与采购部门沟通采购情况:库存太多少采购,库存太少多采购...原创 2018-09-26 10:25:37 · 451 阅读 · 0 评论 -
代理模式——Proxy
终于静下心来好好做一下代理模式的笔记了。说实话,代理模式这个词对我来说又熟悉又陌生。你说陌生吧,Spring 的AOP也了解过一点;你说熟悉吧,但总感觉抓不住它的尾巴,滑不溜秋,在脑海里总没有一个确切的概念。拿来《设计模式之禅》一读,还别说,感觉理解那么一点了。所以就七分抄三分悟记一下。文章目录案例展示——Proxy怎么用?深入分析——Proxy是什么?Proxy的定义代理模式的优点Pro...原创 2018-09-19 09:45:36 · 6534 阅读 · 1 评论 -
原型模式——Prototype
案例展示——Prototype怎么用? 原型模式在开发过程中或许名头没有单例模式,工厂方法模式等设计模式那么响亮,但却是一个应用场景很多的设计模式,下面就通过一个案例来了解这个设计模式是什么。 随着互联网时代的来临,百花齐放,百家争鸣,各种各样的业务都依托互联网而发展的越来越繁荣。而诸多电信公司无疑是互联网产业中属于风口浪尖的产业,因为它们掌控互联网中最核心的源动力——流量。虽然卖流量卖话费...原创 2018-09-18 13:36:01 · 263 阅读 · 0 评论 -
面向对象六大原则——单一职责原则
什么是单一职责原则(Single Responsibility Principle, SRP) 在讲解什么是单一职责原则之前,我们先说一个例子,吊一下口味:我们在做项目的时候,会接触到用户,机构,角色管理这些模块,基本上使用的都是RBAC模型(Role-Based Access Control,基于角色的访问控制, 通过分配和取消角色来完成用户权限的授予和取消,使动作主体(用户)与资源...原创 2018-08-11 22:23:48 · 8602 阅读 · 1 评论