
设计模式
点不点外卖
这个作者很懒,什么都没留下…
展开
-
【设计模式】命令模式
命令模式实现将发起请求的对象与执行请求的对象解耦,但应该注意的是该模式会导致具体的命令类过多。package com.depthmind.designpattern;public class CommandPattern { public static void main(String[] args) { General general = new General()...原创 2020-02-26 15:24:27 · 102 阅读 · 0 评论 -
【设计模式】迭代器模式
UML类图代码实例package com.depthmind.designpattern;import java.util.ArrayList;import java.util.Iterator;import java.util.List;public class IteratorPattern { public static void main(String[] arg...原创 2020-02-26 11:53:24 · 124 阅读 · 0 评论 -
【设计模式】中介者模式
中介者模式行为型设计模式,用一个中介对象来封装一系列的对象交互,使得各个对象之间不需要显示的互相调用,降低耦合度。UML类图代码实例package com.depthmind.designpattern;import java.util.HashMap;import java.util.Map;public class MediatorPattern { public ...原创 2020-02-25 11:33:05 · 177 阅读 · 0 评论 -
【设计模式】备忘录模式
给用户提供了一种可以恢复状态的机制,可以使用户方便的回到某个历史状态,本质是在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存该状态。package com.depthmind.designpattern;import java.util.ArrayList;import java.util.List;public class MementoPattern { ...原创 2020-02-24 16:59:42 · 87 阅读 · 0 评论 -
【设计模式】状态模式
在订单、商品发布等系统中,状态这一属性对应着接下来可以执行的操作,在没有使用状态模式时,往往通过if/else进行判断,导致代码可读性不强且容易出错。使用状态模式进行设计可以使代码的逻辑更加清晰,遵循了开闭原则,但在一定程度上增加了类的数量,不过相比较其优势而言这一缺点完全可以忽略。package com.depthmind.designpattern;public class StateP...原创 2020-02-23 18:05:22 · 175 阅读 · 0 评论 -
【设计模式】责任链模式
责任链模式也叫职责链模式,按照职责来设计对象,最终形成链式调用,在使用该模式时应注意链不要太长,以免影响性能。package com.depthmind.designpattern;public class ChainOfResponsibilityPattern { public static void main(String[] args) { Approve g...原创 2020-02-23 11:04:33 · 184 阅读 · 0 评论 -
【设计模式】桥接模式
桥接模式有效的避免了类爆炸,减少子类数量,利于扩展,在使用时需要明确系统中独立变化的两个维度,这也是使用桥接模式的前提条件。package com.depthmind.designpattern;public class BridgePattern { public static void main(String[] args) { User normalUser =...原创 2020-02-22 16:35:59 · 206 阅读 · 0 评论 -
【设计模式】适配器模式
适配器模式是为了解决对象之间不兼容的问题,有三种实现方式,分别是类适配器、对象适配器、接口适配器。类适配器package com.depthmind.designpattern.adapter;public class ClassAdapterPattern { public static void main(String[] args) { ClassAd...原创 2020-02-22 11:18:09 · 87 阅读 · 0 评论 -
【设计模式】简单工厂模式
简单工厂模式是工厂模式的一种,其特点是实现起来比较简单,可以集中管理对象的创建,但在一定程度上破坏了开闭原则。package com.depthmind.designpattern;import org.springframework.util.Assert;public class SimpleFactoryPattern { public static void main(S...原创 2020-02-21 14:24:44 · 126 阅读 · 0 评论 -
【设计模式】设计模式的三大类
常见的23中设计模式可以分为一下三类:创建型模式:单例模式、抽象工厂模式、工厂模式、原型模式、建造者模式。结构型模式:适配器模式、桥接模式、装饰者模式、组合模式、外观模式、享元模式、代理模式。行为型模式:模板方法模式、命令模式、访问者模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、责任链模式。...原创 2020-02-20 17:59:18 · 505 阅读 · 0 评论 -
【设计模式】常用七大原则
单一职责原则接口隔离原则依赖倒转原则里氏替换原则开闭原则迪米特法则合成复用原则学习尚硅谷韩顺平老师Java设计模式课程总结。原创 2020-02-19 13:43:05 · 128 阅读 · 0 评论 -
【设计模式】观察者模式
Java内置观察者模式应用,观察者实现Observer接口,实现update()方法,被观察者会通过notifyObservers()方法通知每一个Observer的update()方法,在使用notifyObservers()方法时必须调用setChange()方法告诉被观察者数据发生了变化。package com.depthmind.designpattern;import java.u...原创 2020-02-19 10:21:18 · 109 阅读 · 0 评论 -
【设计模式】策略模式
以和平精英的特种作战模式为例,无论是工程兵还是医疗兵,都有射击这个行为,此外这些兵种都有一项特殊技能,但不知道具体行为,比如建盾牌、治疗等,可以选择在特殊技能上应用策略模式,之后如需修改具体技能只需修改具体应用的策略,而不必修改兵种这一对象。package com.depthmind.designpattern;public class StrategyPattern { publi...原创 2020-02-16 16:32:24 · 111 阅读 · 0 评论 -
【设计模式】装饰器模式
装饰器模式可以理解为对对象的包装,每一层包装都可以为对象增加新的功能,实现在不改变原有对象的基础上赋予其新的功能,满足软件开发的开闭原则。package com.depthmind.designpattern;public class DecoratorPattern { public static void main(String[] args) { BeanGen...原创 2020-02-16 15:21:34 · 100 阅读 · 0 评论 -
【设计模式】享元模式
享元模式,通常解释为运用共享技术有效的支持大量细粒度的对象。Java中的String就是典型的享元模式的运用。package com.depthmind.designpattern;import java.util.HashMap;import java.util.Map;import java.util.concurrent.ConcurrentHashMap;public cla...原创 2020-02-15 16:05:48 · 108 阅读 · 0 评论 -
【设计模式】建造者模式
package com.depthmind.designpattern;public class BuilderPattern { public static void main(String[] args) { ProductBuilder builder = new ConCreateProductBuilder(); Director direct...原创 2020-02-15 15:25:22 · 90 阅读 · 0 评论 -
【设计模式】原型模式
原型模式用于创建重复对象,在JAVA中可以通过继承Cloneable接口,该接口仅作为一个标记,并没有提供具体方法,然后通过覆盖Object的clone()方法,该方法是native的,由虚拟机帮我们实现对象的克隆。其中,当一个对象中的成员为immutable的时(int、short、long、String等基本数据类型及其包装类),使用浅拷贝。当对象中的成员包含mutable成员时(例如另外一...原创 2020-02-15 14:40:25 · 99 阅读 · 0 评论 -
【设计模式】抽象工厂模式
package com.depthmind.designpattern;import java.sql.Connection;public class AbstractFactoryPattern { public static void main(String[] args) { IDatabaseUtils iDatabaseUtils = new Oracle...原创 2020-02-14 13:19:15 · 145 阅读 · 0 评论 -
【设计模式】工厂方法模式
抽象出对象的公共部分,其具体实现由子类完成。package com.depthmind.designpattern;import java.util.Calendar;public class FactoryMethodPattern { public static void main(String[] args) { Application applicat...原创 2020-02-14 13:18:04 · 93 阅读 · 0 评论 -
【设计模式】单例模式
饱汉模式//lazyclass LazyPerson { private static volatile LazyPerson person; private LazyPerson(){} public static LazyPerson getSingleton() { if (person == null) { synch...原创 2020-02-14 13:10:59 · 129 阅读 · 0 评论