![](https://img-blog.csdnimg.cn/20210302102126821.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
设计模式(Java)
文章平均质量分 60
好好学习!
独饮敌敌畏丶
做自己该做的事,并接收它的事与愿违!
展开
-
一篇文章掌握职责链模式
一.案例引入1.案例描述2.传统设计方案3.传统方式评价二.职责链模式1.基本介绍2.原理类图说明3.职责链模式解决上述问题的原理类图4.具体代码Approverpublic abstract class Approver { Approver approver;//下一个处理者 String name; public Approver(String name){ this.name = name; } publ原创 2021-02-23 17:19:10 · 112 阅读 · 3 评论 -
一篇文章掌握策略模式
一.案例引入1.案例描述2.传统方式解决的UML类图3.具体代码Duckpublic abstract class Duck { public Duck(){ } //显示鸭子信息 public abstract void display(); public void quack(){ System.out.println("鸭子叫"); } public void swim(){ System.o原创 2021-02-23 16:57:19 · 117 阅读 · 0 评论 -
一篇文章掌握状态模式
一.案例引入案例描述二.状态模式1.基本介绍2.原理类图说明3.状态模式解决上述问题的UML类图4.具体代码具体代码5.状态模式的注意事项和细节原创 2021-02-23 16:34:40 · 94 阅读 · 0 评论 -
一篇文章掌握解释器模式
一.案例引入1.案例描述2.传统方式解决二.解释器模式1.基本介绍2.原理类图解释说明3.解释器模式解决上述问题的原理类图4.具体代码代码5.解释器模式的注意事项和细节原创 2021-02-23 11:11:13 · 108 阅读 · 0 评论 -
一篇文章掌握备忘录模式
一.案例引入1.案例描述2.传统方式解决的思路二.备忘录模式1.基本介绍2.原理类图解释说明3.原理的具体代码Originatorpublic class Originator { private String state;//状态信息 public String getState() { return state; } public void setState(String state) { this.stat原创 2021-02-23 10:23:38 · 107 阅读 · 0 评论 -
一篇文章掌握中介者模式
一.案例引入1.案例描述之前在外观模式的时候用过这个案例2.传统设计方案3.传统方式问题分析二.中介者模式1.基本介绍2.中介者模式原理图3.用中介者模式解决上述问题的原理类图3.具体代码具体代码4.中介者模式的注意事项和细节...原创 2021-02-22 11:39:36 · 104 阅读 · 0 评论 -
一篇文章掌握观察者模式
一.案例引入1.案例描述、2.普通方案介绍方式1方式2具体代码显示当前天气情况(可以理解成是气象站自己的网站)结果传统方式优缺点分析二.观察者模式1.原理2.观察者模式解决上述问题的原理类图3.具体代码Subjectpublic interface Subject { public void registerObserver(Observer o); public void removeObserver(Observer o); pu原创 2021-02-22 10:44:49 · 136 阅读 · 0 评论 -
一篇文章掌握迭代器模式
一.案例引入具体描述之前用组合模式解决过这个问题,这次针对遍历。二.迭代器模式1.基本介绍2.原理类图解释3.迭代器模式解决上述问题的UML类图4.具体代码Collegepublic interface College { public String getName(); //增加系的方法 public void addDepartment(String name,String desc); //返回一个迭代器 public Iter原创 2021-02-21 18:31:24 · 105 阅读 · 0 评论 -
一篇文章掌握访问者模式
一.案例引入1.案例描述2.传统方案的优缺点二.访问者模式1.基本介绍2.访问者模式原理UML类图原理类图的介绍说明3.访问者模式解决上述问题的原理类图(仅供参考)4.具体代码Actionpublic abstract class Action { //得到男性的测评 public abstract void getManResult(Man man); //得到女性的测评 public abstract void getWomanResul原创 2021-02-21 11:34:42 · 123 阅读 · 0 评论 -
一篇文章掌握命令模式
一.案例引入需求介绍二.命令模式1.基本介绍注意命令模式必须支持撤销小例子2.命令模式原理类图对原理类图的说明3.命令模式解决上述问题的UML类图4.具体代码Commandpublic interface Command { //执行动作 public void execute(); //撤销动作 public void undo();}LightReceiverpublic class LightReceiver { pu原创 2021-02-21 10:00:08 · 90 阅读 · 0 评论 -
一篇文章掌握模板模式
一.案例引入二.模板方法模式1.基本介绍模板方法模式又叫模板模式,指的是在一个抽象类公开定义了执行它的方法的模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行简单说,模板方法模式定义一个操作中的算法的股价,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构,就可以重定义该算法的某些特定步骤2.模板方法原理类图3.模板模式解决上述问题的UML类图4.具体代码SoyaMilk//抽象类,表示豆浆public abstract class SoyaMilk原创 2021-02-20 12:29:04 · 150 阅读 · 0 评论 -
一篇文章掌握享元模式
一.案例引入1.案例描述2.传统解决方案3.传统解决方案评价需要的网站结构相似度很高,而且都不是高访问量网站,如果分成多个虚拟空间来处理,相当于一个相同网站的实例对象很多,造成服务器的资源浪费解决思路整合到一个网站中,共享其相关的代码和数据,对于硬盘、内存、CPU、数据库空间等服务器资源都可以达成共享,减少服务器资源浪费即享元模式二.享元模式1.基本介绍2.享元模式原理图原理图解释内部状态和外部状态的实例内部状态和外部状态的定义3.享元模式解决上述问题的UML类图原创 2021-02-19 17:20:18 · 129 阅读 · 0 评论 -
一篇文章掌握外观模式
一.案例引入1.案例说明2.传统方案解决3.传统方案评价4.解决方案定义一个高层接口,给子系统的一组接口提供一个一致的界面(比如在高层接口提供四个方法ready,play,pause,end),用来访问子系统中的一群接口也就是说通过定义一个一致的接口(界面类),用以屏蔽内部子系统的细节,使得调用端只需要跟这个接口发生调用,而无需关心这个子系统的内部细节。这就是外观模式二.外观模式1.基本介绍外观模式也叫“过程模式”。外观模式为子系统中的一组接口提供一个一致的界面,此模式定义了一个高原创 2021-02-19 11:35:48 · 103 阅读 · 0 评论 -
一篇文章掌握组合模式
一.案例引入1.案例描述2.传统方式传统思想是让学院继承学校,让系继承学院,他们之间是继承关系。传统方式评价解决方案把学校、院、系都看做是组织结构,他们之间没有继承的关系,而是一个树型结构,可以更好的实现管理操作。这就是组合模式二.组合模式1.基本介绍组合模式,又叫部分整体模式,它创建了对象组的树形结构,将对象组合成树状结构以表示“整体·部分”的层次关系。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。组合模式使得用户对单个对象和组合对象的访问具有一致性,即组合能让客户以原创 2021-02-17 18:33:47 · 129 阅读 · 1 评论 -
一篇文章掌握装饰者模式
一.案例引入1.案例描述星巴克咖啡订单项目(咖啡馆)①咖啡种类/单品咖啡:Espresso、ShortBlack、LongBlack、Decaf②调料:Milk、Soy、Chocolate③要求在扩展新的咖啡种类时,具有良好的扩展性、改动方便、维护方便④使用OO(面向对象)的思维来计算不同种类咖啡的费用:客户可以点单品咖啡,也可以单品咖啡+调料组合2.较差的方案一方案描述方案一缺点这样设计,会有很多类,当我们增加一个单品咖啡,或者一个新的调料时,类的数量就会倍增,出现类爆炸。3.还原创 2021-02-17 10:32:20 · 84 阅读 · 0 评论 -
一篇文章掌握桥接模式
一.案例引入1.问题描述2.传统方式解决手机问题的UML类图3.传统方式解决手机问题的缺点二.桥接模式1.基本介绍桥接模式是指,将实现与抽象放在两个不同的类层次中,使两个层次可以独立改变。是一种结构型设计模式。桥接模式基于类的最小设计原则,通过使用封装、聚合及继承等行为让不同的类承担不同的职责。它的主要特点是把抽象与行为实现分离开来,从而可以保证各部分的独立性以及应对他们的功能扩展。2.桥接模式原理UML类图类图解释3.桥接模式解决手机问题类图4.具体代码Brand原创 2021-02-16 19:50:48 · 138 阅读 · 0 评论 -
一篇文章掌握适配器模式
一.基本介绍适配器模式将某个类的接口转换成客户端期望的另一个接口表示,主要目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作,其别名为包装器(Wrapper)1.工作原理①将一个类的接口转换成另一个接口,让原本接口不兼容的类可以兼容②从用户的角度看不到被适配者,是解耦的③用户调用适配器转化出来的目标接口方法,适配器再调用被适配者的相关接口方法。用户收到反馈结果,感觉只是和目标接口交互。这里可以类比转接口。泰国的电源是被适配者,转接口是适配器,转接口的那些电源孔就是目标,是输出。原创 2021-02-16 17:56:26 · 151 阅读 · 0 评论 -
一篇文章掌握建造者模式
一.引例1.实例描述(盖房项目)(1)需要建房子,这一过程为打桩、砌墙、封顶(2)房子有各种各样的,比如普通房,高楼,别墅。各种房子的建造过程虽然一样,但是要求不会完全相同2.UML类图3.传统方式具体代码AbstractHousepublic abstract class AbstractHouse { //打地基 public abstract void buildBasic(); //砌墙 public abstract void buildWalls(原创 2021-02-15 10:52:35 · 179 阅读 · 0 评论 -
一篇文章掌握原型模式
一.提出问题1.问题描述(克隆羊问题)现在有一只羊tom。姓名为tom,年龄为1,颜色为白色。请编写程序创建和tom羊属性完全相同的10只羊。2.UML类图3.具体代码Sheep类public class Sheep { private String name; private int age; private String color; public Sheep(String name, int age, String color) { th原创 2021-02-14 18:14:29 · 208 阅读 · 0 评论 -
一篇文章掌握工厂模式
一.一个实际的案例(原始版)1.需求2.UML类图3.具体代码(1)Pizza抽象类//将pizza做成抽象类public abstract class Pizza { protected String name; public abstract void prepare(); public void bake(){ System.out.println(name + "baking"); } public void cut(){原创 2021-02-14 11:37:41 · 536 阅读 · 3 评论 -
一篇文章搞懂单例模式
一.定义所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)二.单例模式的八种方式1.饿汉式(静态常量)(1)步骤①构造器私有化②类的内部创建对象③向外暴露一个静态的公共方法:getInstance(2)具体代码public class Singleton { //1.构造方法私有化 private Singleton(){} //2.本类内部创建对象实例 priv原创 2021-02-07 16:47:19 · 130 阅读 · 0 评论 -
UML类图
一.UML图1.基本介绍UML(Unified modeling language UML),即统一建模语言,是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果UML本身是一套符号的规定,就像数学符号和化学符号一样,这些符号用于描述软件模型中的各个元素和他们之间的关系,比如类、接口、实现、泛化(继承)、依赖、组合、聚合等。2.UML图分类画UML图与写文章差不多,都是把自己的思想描述给别人看,关键在于思路和条理①用例图(use case)②静态结构图类原创 2021-02-07 10:59:42 · 2120 阅读 · 6 评论 -
设计模式7大原则
一.单一职责原则(SingleResponsibility)1.介绍这是对类来说的,即一个类应该只负责一项职责。如类A负责两个不同职责:职责1,职责2.当职责1需求变更而改变类A时,可能造成职责2执行错误,所以需要将类A的粒度分解为A1,A2.。也就是说分成两部分。2.具体案例介绍①没有遵守单一职责原则public class Main { public static void main(String[] args) { Vehicle vehicle = new Vehi原创 2021-02-06 16:08:00 · 143 阅读 · 0 评论 -
设计模式前篇
一.设计模式概念软件工程中,设计模式是对软件设计中普遍存在(反复出现)的各种问题所提出的解决方案。二.设计模式目的编写软件的过程中,程序员面临着来自耦合性、内聚性以及可维护性,可扩展性,重用性,灵活性等多方面的挑战,设计模式是为了让程序(软件),具有更好的①代码重用性②可读性③可扩展性④可靠性⑤使程序呈现高内聚、低耦合的特性。(模块内部联系很紧密,模块与模块之间联系是低耦合的)三.设计模式七大原则1.单一职责原则2.接口隔离原则3.依赖倒转(倒置)原则4.里氏替换原则5.开闭原则原创 2021-01-31 20:22:59 · 105 阅读 · 0 评论