![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
这也是博主初次学习设计模式,主要参考《设计模式之禅》
丨Q ,Q丨
这个作者很懒,什么都没留下…
展开
-
自动装配举例:byName
/** * * 依赖者类,需要注入两个bean * 第一个bean的name为one * 第二个bean的name为two * *info是一个String类型,要手动注入 */public class Dependent { private String info; private Collaborator one; private Collabo...原创 2020-02-10 13:12:20 · 241 阅读 · 0 评论 -
命令模式
命令模式主要解决的问题:封装一条命令(或请求),将的请求方和执行方(或者叫接收方)分开,使它们没有任何关系。什么是行为的请求方和执行方 对应代码如下:public class Client { public static void main(String[] args){ Invoker invoker = new...原创 2020-02-09 18:29:53 · 124 阅读 · 0 评论 -
StringBuilder与建造者模式
StringBuilder与建造者模式在刚学完建造者模式的时候,突然想到有StringBuilder这个东西。StringBuilder是建造者,String是产品,问题来了:指挥者在哪?StringBuilder是建造者模式吗?首先给个结论:StringBuilder符合建造者模式的思想,但与传统的建造者模式略有不同。分析关于建造者模式的思想,就是将创建过程与表现分离,也就是将...原创 2020-02-07 21:59:33 · 1585 阅读 · 0 评论 -
依赖倒置原则
依赖倒置原则依赖倒置原则,也就是我们常说的面向接口编程(面向对象设计的精髓之一)。问题:什么是面向接口对于常规的MVC结构来说,假设我们写了下面的代码:public class UserService{ private UserDaoMySQL userDao; public void setUserDaoMySQL(UserDaoMySQL userD...原创 2020-02-02 23:34:42 · 87 阅读 · 0 评论 -
中介者模式(调停者模式)
中介者模式(调停者模式)通过一个问题引入:进销存管理有3个模块,采购管理、销售管理、存货管理。采购管理:根据销售状况进行采购(依赖销售管理);采购时考虑库存容量,修改库存(依赖存货管理)销售管理:销售时,会修改库存的值(依赖存货管理),如果库存不够,需要通知采购管理模块进行采购(依赖销售管理)存货管理:库存数量过多时,如果销售状况不佳(依赖销售管理),则降低采购数量(依赖采购...原创 2019-12-23 20:45:48 · 277 阅读 · 0 评论 -
原型模式
原型模式原型模式是最容易理解的设计模式。原型模式定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。说直接点,就是创建一个对象的拷贝。原型模式通用类图: 客户端(上层模块)想要创建一个已有对象(prototype)的副本,这个对象有一个克隆方法,调用这个方法...原创 2019-12-22 19:54:16 · 90 阅读 · 0 评论 -
代理模式扩展(二):动态代理
代理模式扩展(二):动态代理动态代理就是要再运行过程中决定代理类实现哪个接口,应用了Java的反射机制的Proxy类,如果还不熟悉这个类的读者,请跳转到我的另一篇博客先学习一下。点击这里跳转为什么要使用动态代理?动态代理,最大的用处就是用来实现AOP(面向切面编程),在不改变已有代码结构的情况下,增强或控制对象的行为。举例:追踪一个对象的方法调用这个例子很简单,很显然是要增强对...原创 2019-12-15 20:01:30 · 169 阅读 · 0 评论 -
代理模式扩展(一):普通代理和强制代理
代理模式扩展(一):普通代理和强制代理通过前面的学习,搞清楚了什么是代理模式,这篇博客来讨论下对于它的扩展内容:普通代理和强制代理。普通代理和强制代理的比较普通代理:上层模块必须知道代理类的存在。访问真实主题角色的时候,要通过代理,因此要在上层模块创建代理对象。代理对象关联真实角,第一种方式:创建代理对象时,传一个真实对象的引用;第二种方式:在代理类内部实现。如果采用第二种关联的方式...原创 2019-12-13 20:37:18 · 1048 阅读 · 0 评论 -
代理模式
代理模式代理模式:为其他对象提供一种代理,以控制这个对象的访问。翻译一下。。。通过代理的方式,代理其他的对象,以便控制这个对象的访问。举栗子先把定义放在那,先不要管它到底说了个啥,先来举个服务器的例子。大家都应该使用过云服务器,有了云服务器,我们只需要通过任何一台终端就可以访问服务器,把命令发给服务器,服务器处理相关命令。interface Computer { v...原创 2019-12-13 18:45:50 · 87 阅读 · 0 评论 -
建造者模式扩展 & 总结篇
建造者模式扩展 & 总结篇再把定义说一遍:将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示。上一篇介绍完了建造者模式,但是还有一个疑问,就是定义中的表示,除了内部关联的对象不同,还可以是这个对象的行为,关于行为该怎么表现呢?可以结合模板方法模式实现行为的不同。模板方法模式本身是不能按照任意的顺序调用方法的,通过与建造者模式的结合,可以实现这个需求...原创 2019-12-11 21:36:05 · 232 阅读 · 0 评论 -
建造者模式(Builder Pattern):我们不生产零件,我们只是零件的搬运工
建造者模式(Builder Pattern)我们不生产零件,我们只是零件的搬运工建造者模式,是创建型模式的一种,直接从定义来说并不好理解,所以,先举一个例子来引出它的定义。举个栗子,装台计算机。首先,当然要创建一个计算机类(为了方便,计算机的零部件(字段)都使用字符串,对于一个复杂对象来说,它可能聚合了其它的复杂对象)想想计算机有啥部件呢?嘿嘿,复习下冯诺依曼原理中的五大部件:运...原创 2019-12-11 20:51:53 · 243 阅读 · 0 评论 -
模板方法模式
模板方法模式先来举个例子,两个人下中国象棋,要怎么实现?这简单啊,创建一个“棋手”的类,实例化两个对象,放一个循环里,每次都调用它们“走棋”的方法就行了。写段伪代码:class Player{ public Position getPosition(){ //返回要走棋的位置 } public void put(Position p){ ...原创 2019-12-10 21:12:49 · 87 阅读 · 0 评论 -
抽象工厂模式
抽象工厂模式抽象工厂模式:为创建一组相关或相互依赖的对象提供一个接口,而无需指定它们的具体类。首先给出抽象工厂模式的通用类图: 在我第一次看到这个类图的时候,“我靠,这和工厂方法模式有啥区别,多了一个场景类Client?”。这个类图是《设计模式之禅》中的一张图,看完之后明白了这张图。...原创 2019-12-10 19:21:01 · 172 阅读 · 0 评论 -
工厂方法模式的扩展(二):替代单例模式 & 产品对象重复使用
工厂方法模式的扩展(二):替代单例模式 & 产品对象重复使用这篇博客介绍下工厂方法模式的另外两种扩展:代替单例模式以及产品对象重复使用。这两种扩展体现了一种思想:经常使用或全局共享以及必要情况下,没必要销毁对象1. 代替单例模式与其说代替单例模式,到不如所是用工厂模式实现单例模式。 对应代码如下:注意,构造器被...原创 2019-12-09 21:16:29 · 437 阅读 · 1 评论 -
工厂方法模式扩展(一):简单工厂模式 & 多工厂模式
工厂方法模式扩展(一)这篇博客主要介绍工厂方法模式的两种扩展:简单工厂模式(静态工厂方法模式)和多工厂模式1. 简单工厂模式这个模式在我的另一篇博客也写到过:点击查看简单工厂模式,又叫静态工厂方法模式。它的类图如下: 简单工厂模式,没有抽象的工厂接口,将工厂方法设置为静态方法,直接通过类名调用。它的优点就是足够简单。与普...原创 2019-12-09 20:33:00 · 518 阅读 · 0 评论 -
工厂方法模式
工厂方法模式工厂方法模式,定义一个接口用于创建对象的接口,让这个接口的子类决定实例化哪一个类。 分析定义定义一个接口,用于创建对象。这个用于创建对象的接口,就是工厂接口AbstractFactory,接口定义了一个方法,用于返回一个类的实例 让这个接口的子类决定实例化哪一个类的实例。工厂接口的子类Factor...原创 2019-12-09 19:52:37 · 103 阅读 · 0 评论 -
有上限的多例模式
有上限的多例模式对于单例模式,是指在系统中仅有一个实例,而有上限的多例模式指的是有多个实例,但是数量不能多余一个预设的值。其实和单例模式一样,关键点就是在于怎样产生实例。这里就是用“饿汉式”的方式来产生多个实例public class UpperLimitMultipleCase{ private static int maxNumOfCase = 3; priv...原创 2019-12-08 13:07:42 · 190 阅读 · 0 评论 -
单例模式(Singleton Pattern)
单例模式(Singleton Pattern)单例模式,从字面意思上来看,就是一个类只有一个实例。那为什么要有单例模式呢?带着这个问题往下看。为什么要有单例模式(单例模式的应用场景)1.需要生成唯一序列号假设采用最简单的序列号生成方式,即连续的方式。设序列号id的初值为1,则每次生成序列号只需要将id++即可。在这种场景下,有多个实例(也就有了多个id)是没有必要的,尤其是在多线...原创 2019-12-08 12:48:29 · 139 阅读 · 0 评论 -
单一职责原则(SRP)
单一职责原则(Single Responsibility Principle | SRP)单一职责原则,用来指导接口、类甚至是方法的设计。其实,对于接口和方法,实现单一职责是比较简单的,对于类,在实际情况中,很难做到单一职责。什么是职责?单一职责原则,从字面意思上来看,这个原则的核心就是职责,那究竟什么是职责?我个人的理解就是“你负责的部分”;比如在流水线上工作的人,每个人在自己...原创 2019-12-07 21:35:48 · 270 阅读 · 0 评论 -
设计模式 目录
6大设计原则单一职责原则里氏替换原则依赖倒置原则接口隔离原则迪米特法则开闭原则原创 2019-12-07 19:34:44 · 160 阅读 · 0 评论