设计模式
17245
喜欢编程
展开
-
外观模式/门面模式
介绍 外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。意图:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 主要解决:降低访问复杂系统的内部子系统时的复杂度,简化客户端与之的接口UML代码实现public class FacadePatternDemo { public static...原创 2020-06-12 10:44:21 · 125 阅读 · 0 评论 -
适配器模式
介绍 将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。主要解决:主要解决在软件系统中,常常要将一些"现存的对象"放到新的环境中,而新环境要求的接口是现对象不能满足的。UML代码实现public class AdapterPatternDemo { public static void main(String[] args) { MediaPlayer player = new MediaPlayer(); ...原创 2020-06-12 10:40:42 · 96 阅读 · 0 评论 -
过滤器模式/标准模式
介绍 允许开发人员使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们连接起来。这种类型的设计模式属于结构型模式,它结合多个标准来获得单一标准。UML代码实现public class FilterpatternDemo { public static void main(String[] args) { List<Person> persons = new ArrayList<Person>(); persons.add(new P...原创 2020-06-12 10:37:03 · 222 阅读 · 0 评论 -
装饰模式
介绍 允许向一个现有的对象添加新的功能,同时又不改变其结构。 这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装UML代码实现public class DecoratorPatternDemo { public static void main(String[] args) { Shape circle = new Circle(); ShapeDecorator sd = new RedShapeDecorator(circle); sd.drow()...原创 2020-06-12 10:32:46 · 94 阅读 · 0 评论 -
桥接模式
介绍桥接模式, 抽象化与实现化解耦,使得二者可以独立变化UML代码实现public class BridgePatternDemo { public static void main(String[] args) { Shape shape1 = new Circle(new GreenCircle(), 1, 1, 1); Shape shape2 = new Circle(new RedCircle(), 1, 2, 1); shape1.draw(); sha.原创 2020-06-12 10:27:43 · 130 阅读 · 0 评论 -
享原模式
介绍享原模式:是结构性模式,主要用于减少创建对象的数量,以减少内存占用和提高性能。 享元模式和原型模式的区别:原型模式为了快速创建对象,而享原模式是为了对象的复用UML实现代码public class FlyweightPatternDemo { public static void main(String[] args) { Shape circle = ShapeFactory.getShape("circle"); circle.drow(); ShapeFacto原创 2020-06-12 10:23:34 · 100 阅读 · 0 评论 -
结构型模式 之 组合模式
介绍 组合设计模式是一种结构型模式,主要描述了主干和分支的层次关系,将主干和分支当作一个相似的对象进行处理,常用来表示树形结构的数据结构,例如菜单树。数据结构类图 实现代码import java.util.ArrayList;import java.util.List;/** * @author houkai ...原创 2019-01-28 21:16:10 · 140 阅读 · 0 评论 -
创建型模式 之 原型模式
介绍 原型模式属于创建型设计模式,主要是用于快速的创建重复的对象。实现方式 通过将一个已经存在的对象进行拷贝克隆出一个相同的对象。UML 实现代码import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import jav...原创 2019-01-28 21:03:39 · 166 阅读 · 0 评论 -
创建模型式 之 建造者模式
1.介绍 建造者模式属于创建型的设计模式,目的将一个复杂的对象的创建分成多步,有一个组建者决定怎样组装对象,产生不同功能的物品,例如一个电脑的生产,联想公司并不生成CPU和内存条等,可以让Inter和三星等公司生产完成后进行组装产生电脑,具体怎样组装是由联想公司决定,可以采取同一功能不同配置的组件最后组装出不同配置的电脑,相当于创建多个不同的对象。2. 解决的问题 ...原创 2019-01-27 13:34:31 · 206 阅读 · 0 评论 -
设计模式基本原则
1. 开闭原则 对扩展开放,对修改关闭,即现有方法不修改,通过拓展实现,常见接口多实现,多态。2. 依赖倒转原则 以开闭原则为基础,依赖的是接口或者抽象而不是具体的实现。3. 里式代换原则 任何地方基类出现的地方子类一定可以出现,注意开闭,父类引用指向子类实现。4. 接口隔离原则 降低类之间的耦合度,一个接口就干一件事情,接口之间的功能不要耦合,防止牵一发动全身。5...原创 2019-01-27 12:28:31 · 184 阅读 · 0 评论 -
创建型模式 之 单例模式
目录1.单例模式介绍2. UML 类图3. 实现 3.1 懒汉式,线程不安全 3.2 懒汉式,线程安全 3.3 饿汉式 3.4 懒加载且线程安全 3.5 基于枚举实现 1.单例模式介绍 单例模式属于创建型模式 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建 2. UML 类图3. ...原创 2018-03-23 17:43:01 · 158 阅读 · 0 评论 -
创建型模式 之 抽象工厂模式
1.介绍 在简单工厂的基础上进一步进行抽象就是抽象工厂,即对工厂进行抽象,第一步先产生工厂,第二步根据产生的工厂再生产对应的对象。实现方式可以参考上一篇博客(https://blog.csdn.net/houkai18792669930/article/details/79580789)简单工厂的实现,在此基础上稍作修改就可以实现抽象工厂。2.UML图 ...原创 2019-01-27 13:15:50 · 105 阅读 · 0 评论 -
创建型模式 之 简单工厂模式
1.介绍 工厂模式属于创建型的设计模式,通过对对象创建过程的封装与屏蔽且暴露一个统一的对外接口,当内部行为发生改变的时对外部的影响较小。例如在Hibernate 换数据库只需换方言和驱动就可以实现数据库支持的切换,Java的Iterator等都是通过工厂模式实现的。工厂模式分为简单工厂模式和抽象工厂模式,本文主要介绍简单工厂模式。 2. 简单工厂模式类图 ...原创 2019-01-27 13:04:35 · 222 阅读 · 0 评论