创建型模式之工厂模式(2.2)
什么是工厂模式?
工厂模式是创建型模式的一种,工厂是用来生产的,而在Java里,是用来生产对象实例的。
和单例模式相似,工厂模式同样聚焦于在考虑整个软件构建的情况下合理创建对象,从而保证软件的扩展性和稳定性。
工厂模式分为三种:
简单工厂模式
工厂方法模式
抽象工厂模式
简单...[2019/8/12]
设计模式之工厂模式(上篇)设计模式之工厂模式(上篇)
为了面向接口编程,而不是面向实现编程,所以此时我么就不能再直接使用new了,因
为当看到“new”时,我们就会想到“具体”。
下面来看一个例子,假如你有一个披萨店,你的代码可能这么写:
1 Pizza orderP...[2019/8/9]
设计模式七大原则(1.2)
---恢复内容开始---
设计原则核心思想
设计原则的目的是构建出更加稳定和健壮的软件。而像这样的软件要求
松耦合
可扩展性强
1.单一职责原则
什么是单一职责原则?
在Java语言中:一个类只负责一项功能。
单一职责原则的目的
通过降低类的复杂度从而提高类的可读性,可...[2019/8/9]
DesignPattern系列__09设计模式概述
设计模式介绍
设计模式是程序员在面对同类软件工程设计问题所总结出来的有用的经验,模式不是代码,而是某类问题的通用解决方案, 设计模(Design pattern)代表了最佳的实践。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。
设计模式的本质提高 软件的维护性...[2019/8/8]
设计模式之装饰者模式
首先让我们看一下装饰者模式(我爱叫他套娃模式)的概念:动态的将责任附加到对象上,
...[2019/8/8]
DesignPattern系列__10单例模式
单例模式介绍
单例模式,是为了确保在整个软件体统中,某个类对象只有一个实例,并且该类通常会提供一个对外获取该实例的public方法(静态方法)。
比如日志、数据库连接池等对象,通常需要且只需要一个实例对象,这就会使用单例模式。
单例模式的八种模式
饿汉式(静态常量)
饿汉式(静态代码块...[2019/8/8]
设计模式:与SpringMVC底层息息相关的适配器模式设计模式:与SpringMVC底层息息相关的适配器模式
目录
前言
适配器模式
1、定义
2、UML类图
3、实战例子
4、总结
SpringMVC底层的适配器模式
参考...[2019/8/7]
DesignPattern系列__04里氏替换原则
1.内容引入——继承体系的思考
在继承中,凡是在父类已经实现的方法,其实算是一种契约或者规范,子类不应该在进行更改(重写);但是,由于这一点不是强制要求,所以当子类进行重写的时候,就会对继承体系产生破坏。
同时,继承带来便利的时候,也有弊端:给程序带来了侵入性,增加了对象之间的耦合性,可移植性低。...[2019/8/7]
设计模式的七大原则(4) --里氏替换原则
前言
上一节中我们介绍了,依赖倒置,依赖倒置利用抽象的稳定性来架构我们的系统,是我们经常能遇到的一种原则,比如说面向接口编程。
这一节中,我们来说说里氏替换原则,这个原则其实非常非常的简单,其实与依赖倒置相结合来看,就是希望我们用抽象的方法来构建项目而非具体的实现,里氏替换原则就是推荐我们不要重...[2019/8/7]
DesignPattern系列__05开闭原则DesignPattern系列__05开闭原则
介绍
开闭原则是编程设计中最基本、最重要的原则。
定义:一个软件实体如类、方法和模块等,应该对扩展(提供方)开放,对修改(使用方)关闭。用抽象构建框架,用实现扩展细节。
也就是说,在需求发生新的变化时,我们不应该修改原来的代码,而应该通过扩展来满足新的需求。
例子引入
我们要实现一个画图的功能...[2019/8/7]
创建模式--工厂模式、抽象工厂模式
一、小案例分析
1、功能需求:
实现一个发送信息的功能,要便于扩展与维护。(1)发送信息的工具有很多,比如短信、微信、邮件、QQ等。(2)选择某个工具进行信息发送。
2、小菜鸡去实现:
(1)定义一个发送工具的父类(接口),并将各种发送工具作为子类(实现类)。(2)定义一个选择发送工...[2019/8/7]
设计模式之观察者模式
首先让我们来看一下定义
&nbs...[2019/8/7]
DesignPattern系列__06迪米特原则DesignPattern系列__06迪米特原则
迪米特原则定义
迪米特原则,也叫最少知道原则,即一个类应该对自己依赖的类知道的越少越好,而你被依赖的类多么复杂,对我都没有关系。也就是说,对于别依赖的类来说,不管业务逻辑多么复杂,都应该尽量封装在类的内部;对外除了必备的public方法,不再泄露任何信息。
1.问题由来
我们知道,类和类是有耦合...[2019/8/7]
DesignPattern系列__08UML相关知识DesignPattern系列__08UML相关知识
前言
现在,很少有人和90年代一样,自己去实现一个软件的各个方面,也就是说,在工作中,和人沟通是必备的技能。那么,作为一枚码农,如何和他人沟通呢?这就要依靠本文的主题了——UML。
简介
UML——Unified modeling language UML(统一建模语言),是一种用于软件系统分析...[2019/8/7]
面向对象六大设计原则
最近一直在学习设计模式相关的知识,还是老规矩,和各位一起学习,一起探讨,本系列所发表所有内容仅代表个人观点。《简介》 说到设计模式,当初第一次听到时,第一反应就是很深奥,完全理解不了这个概念到底是什么意思,下面我先从网上摘录一份定义。 ...[2019/8/5]
DesignPattern系列__03依赖倒置原则
依赖倒置原则(Dependence Inversion Priiciple,DIP)
介绍
High level modules should not depend upon low level modules. Both should depend upon abstractions. Abst...[2019/8/5]
Java设计模式之工厂模式
本文总结一下java的GOF(Gang Of Four)23种设计模式中的工厂模式。 工厂模式: 作用:实现了创建者和调用者的分离; 核心本质:实例化对象,用工厂方法代替new操作,将选择实现类创建对象统一管理和控制,从而将调用者跟我们的实现类解耦。 工厂设计的基本原则: 1、OCP(Open_C...[2019/8/5]
设计模式入门设计模式入门
一、设计模式
1、什么是设计模式
设计模式是一套被反复使用、多数人知晓、代码设计经验的总结。
2、目的
设计模式的目的是为了让软件具有更好的代码重用性、可读性、可扩展性、可靠性,同时使程序间出现高内聚、低耦合的特性。
3、七大原则
(1)单一职责原则(Single...[2019/8/5]
大话设计模式笔记(十四)の适配器模式大话设计模式笔记(十四)の适配器模式
举个栗子
问题描述
不同国家的人在NBA打球,但都是用英文交流。
简单实现
Player
/**
* 球员
* Created by callmeDevil on 2019/8/4.
*/
public abstract cla Player {
protected ...[2019/8/5]
DesignPattern系列__02接口隔离原则
介绍
客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小接口上。
Demo引入
先来看一张图:
interface MyInterface {
void operation1();
void operation2();
void ...[2019/8/5]
23种设计模式之原型模式
原型模式
1、基本介绍
1)原型模式(Prototype模式)是指:用原型实例指定创建对象的种类,并通过拷贝这些原型,创建新的对象。 2)原型模式是一种创建型设计模式,允许一个对象再创建另一个可定制的对象,而无需知道如何创建的细节。 3)原理:通过将一个原型对象传给那个要发动创建的对象,这个要发动...[2019/8/2]
设计模式的七大原则(3) --依赖倒置原则
前言
上一节我们说了接口隔离原则,就是让接口的职责最小化。这样对维护代码简单,调用方法也清晰。
这节我们来研究依赖倒置原则。这个原则我认为是特别特别重要的。在很多地方我们能看到。比如Dubbo中使用到的SPI等等。
基本介绍
什么是依赖倒置原则?
我们可以将其分为两点:
1) 高层模块不应...[2019/8/2]
设计模式:观察者模式 ——— 城管来了,摊主快跑
目录
前言
观察者模式
定义
通用类图
实际例子
总结
优点
缺点
参考:
...[2019/8/2]
DesignPattern系列__01SingletonResponsibility(单一职责原则)
单一职责原则
单一职责原则:一个类应该只有一个原因引起改变,即一个类应该只负责一个业务逻辑。
问题由来:类T负责t1, t2两个职责,当因为t1j对类T修改的时候,可能导致类T出现问题而影响职责t2。
解决方案:遵循单一职责原则,将类T进行改写,确保一个类负责一个职责。
demo:
有一个类Ani...[2019/8/2]
SpringBoot与SpringMVC的区别是什么?Amber-
感谢原文出处:https: www.cnblogs.com/javazhiyin/
Spring 框架就像一个家族,有众多衍生产品例如 boot、security、jpa等等。但他们的基础都是Spring 的 ioc和 aop ioc 提供了依赖注入的容器 aop ,解决了面向横切面的编程,然...[2019/7/29]
大话设计模式笔记(十一)の观察者模式
举个栗子
问题描述
几个同事上班期间看股市行情,让前台MM帮忙看着老板什么时候过来查岗,老板进门的时候MM就拨电话给其中一个同事,于是所有同事都知道了,再继续工作。。。
简单实现
前台秘书MM
/**
* 前台秘书MM
* Created by callmeDevil on 2019/7/2...[2019/7/29]
23种设计模式之单例模式
单例模式
单例模式分八种方式
1)饿汉式(静态常量)2)饿汉式(静态代码块)3)懒汉式(线程不安全)4)懒汉式(线程安全,同步方法)5)懒汉式(线程安全,同步代码块)6)双重检查7)静态内部类8)枚举
饿汉式(静态常量)
public cla SingletonTest01 {
...[2019/7/29]
【设计模式】Composite【设计模式】Composite
目录
前言
安卓View的实现
View
Beyond setContentView
setContentView做了什么事情?
如何将xml文件变成对象的?
...[2019/7/29]
大话设计模式笔记(十二)の抽象工厂模式大话设计模式笔记(十二)の抽象工厂模式
举个栗子
问题描述
模拟访问数据库“新增用户”和“得到用户”,用户类假设只有ID和Name两个字段。
简单实现
User
/**
* 用户类
* Created by callmeDevil on 2019/7/28.
*/
public cla User {
private ...[2019/7/29]
做一个不复制粘贴的程序员[1]: 使用模板方法模式(1)- 分页查询实例
对于重复的代码,如果是重复的字符串,我们会想到提出一个变量。如果是重复的代码块,我们会想到提取出一个方法。
但如果这重复的代码块中有一处或几处是会变化的,那么就没那么容易提取出一个方法。说起来有点抽象,下面看一个例子。
一、分页查询
写过CRUD的同学肯定写过很多分页查询,分页查询的主要步骤是...[2019/7/29]
做一个不复制粘贴的程序员[1]: 使用模板方法模式(2)- 对象更新比较器实例
在进入正题之前,说一些废话,谈谈对于我的前一篇文章被移出博客园首页的想法。不谈我对于其他首页文章的看法,光从我自身找找原因。下面分析下可能的原因:
篇幅太短:我觉得篇幅不能决定文章的质量,要说清楚一个问题,肯定字数越少越好
代码过多,文字太少:Talk is cheap. Show me the...[2019/7/29]
设计模式的七大原则(2) --接口隔离原则
前言
上一节我们学习了单一职责原则,简单来说就是各司其职,厨师就专注做好菜,不要跑到前堂做起小二。
但是呢,万事无一绝对。如果只是小饭店有时候也不是特别严格。还是那句话,原则是死的,人是活的。
接下来我们来学习接口隔离原则。
基本介绍
客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖...[2019/7/26]
【设计模式】Bridge【设计模式】Bridge
前言
Bridge设计模式,将一个复杂类分成可以单独开发的部分。分成的两个部分,abstraction,implementation。字面上是抽象和实现,但不同于抽象方法及其实现。下面摘录Wiki的两句话。
decouple an abstraction from its implementa...[2019/7/26]
工厂模式简介
工厂模式用于创建对象时,有简单工厂,工厂方法、抽象工厂。
简单工厂:由一个工厂对象决定创建哪个实例的对象。简单工厂适用于创建对象少的场景,客户端只需要传入参数,对于如何创建不用关心。
缺点:工厂类职责过重,不易于扩展复杂结构的实例对象,不符合开闭原则。
工厂方法:...[2019/7/26]
设计模式:策略模式,Java集合定制排序的核心思想
前言
前阵子面试的时候,有个面试官问我了解哪些设计模式吗?我说了策略模式。接着他问有哪些场景应用,我又回答他jdk的集合工具类有个排序方法就用到了策略模式,也就是java.util包下的Collections类,该类中有个sort方法,我们可以自定义排序规则实现集合的定制排序,这就是策略模式最直接...[2019/7/25]
开发技术--设计模式
开发|设计模式
设计模式是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案。
前言
目前所有的文章思想格式都是:知识+情感。
知识:对于所有的知识点的描述。力求不含任何的自我感情色彩。
情感:用我自己的方式,解读知识点。力求通俗易懂,完美透析知识。
正文
设计模式有三大类:创建型模...[2019/7/25]
单例模式
应用场景
windows的任务管理器
网站的计数器
应用程序的日志
数据库连接池,因为数据库连接是一种数据库资源。数据库软件系统中使用数据库连接池,主要是节省打开或者关闭数据库连接所引起的效率损耗,这种效率上的损耗还是非常昂贵的,因为何用单例模式来维护,就可以大大降低这种损耗。
多线程的线程池的设...[2019/7/25]
【设计模式】Adapter
前言
Adapter设计模式,允许客户端使用接口不兼容的类。
昨天收拾一些以前的东西,发现了藏在柜子里的一条线,这条线叫做OTG。这条线的一端是micro-usb的输出口,另一端是usb的输入口。这条线,就是Adapter。手机如果想要使用U盘,会发现这个U盘的usb输出口太大了,根本插不进手机...[2019/7/25]
Java设计模式-单例模式
单例模式的定义
在《Java与模式》书中这样说到:作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。
单例模式的特点
从单例模式的定义中我们不难发现单例模式有以下特点
单例模式的类(以下简称单例类)只能有一...[2019/7/25]
设计模式之状态模式(一)
我原本以为在对乡村的一切事物都很容易,但是每次我一回头就有更多变更的请求纷至沓来。我快崩溃了!----当小编读到这段话的时候,甚是感慨,设计模式的世界真的不是那么容易弄懂的,好在我还在学习。
基本常识:策略模式和状态模式是双胞胎,在出生时才分开。策略模式是围绕可以互换的算法来创建成功业务的。然而...[2019/7/24]
【设计模式】Singleton【设计模式】Singleton
前言
Singleton设计模式,确保全局只存在一个该类的实例。将构造器声明为private,防止调用(虽然还是可以使用反射来调用)。声明一个静态的类实例在类中,声明一个公共的获取实例的方法。这篇博文给出了简单的实现方法,分析如何做到线程安全,整理了使用Singleton的坏处。
线程安全
...[2019/7/24]
条件语句重构分析
条件语句重构分析
策略模式重构条件语句
状态模式重构条件语句
多态重构条件语句
其实这三种方式都是基于多态实现的,直接加上了各个的特性罢了。策略模式相比较状态模式,前者由客户端传入所有的选择项,而后在Context环境类中选择具体的选项、后者则是在Context状态管理器中根据客户端传入的选择...[2019/7/24]
抖音上热门的方法和技巧抖音上热门的方法和技巧
大家在玩抖音的过程中是不是会遇到下面的问题呢,是否玩了很长时间的抖音,并且花了很多原创的心血,作品却依然没有上热门是否感觉明明已经非常努力了,而热门与你还是擦肩而过是否发现看到别人的视频在某平台上见过,却在这里上了热门。
其实,对于80%的抖音用户来说,这些问题都在困惑着大家,实...[2019/7/22]
抽象工厂模式抽象工厂模式
抽象工厂模式
抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的...[2019/7/22]
设计模式的七大原则(1) --单一职责原则
前言
最近工作中备受打击,之前设计的很多程序都被老大否决,需要重构,让我好好看看设计模式。之前对这一块内容的确不怎么重视,感觉枯燥无聊又派不上用场。后来沉下心来研究了一番...
我靠,原来如此,之前写代码的时候怎么这么傻逼,很多问题其实在一开始设计的时候就能避免。之前写的都是些什么鬼。
我们踩...[2019/7/22]
大话设计模式笔记(九)の外观模式
举个栗子
问题描述
股民炒股票
简单实现
股票1
/**
* 股票1
* Created by callmeDevil on 2019/7/20.
*/
public cla Stock1 {
public void sell() {
System.out.pr...[2019/7/22]
设计模式之(十)装饰模式(DECORATOR)
在购买了一个房子后,如果是毛坯房,肯定不合适直接入住的。需要对它进行装修:地面找平贴地砖、批墙贴墙纸、吊顶装订以及买需要的家具,住进去以后也可能根据需要再添加或者去掉一些家具或者修改一些东西。所以的这一切,都是为了住起来舒服,也就是更好试用这个房子。这个装修过程,基本上就是装饰模式需要做的事情...[2019/7/22]
大话设计模式笔记(十)の建造者模式
举个栗子
问题描述
画一个小人,有头、身体、两手、两脚就可以了。
简单实现
人类
/**
* 人类
* Created by callmeDevil on 2019/7/21.
*/
public cla Person {
public void drawHead() {
...[2019/7/22]
23种设计模式23种设计模式
1.单例模式(Singleton Pattern)
定义:Ensure a cla has only one instance, and provide a global point of acce
to it.(确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实
例。)
通...[2019/7/22]
设计模式之前言
1. 模式
在一定环境中解决某一问题的方案,包括三个基本元素:问题、解决方案和环境。
2. 设计模式
(1)设计模式是一套反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解,保证代码可靠性。毫无疑问,设计模式于系统是...[2019/7/22]