![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 94
安益空间
在适当的时候做适当的重构
展开
-
有限状态机
在讲有限状态机之前,我们先了解一下什么是计算。计算,简单来说就是有一个问题,然后给出答案。比如知道边长,求正方形的面积;又比如知道两个点和已知路径,求最短路径等等,有无穷无尽的问题。如果用计算机的模型去处理这些问题的话,我们希望是统一的。那么怎么将问题统一化呢?把所有问题都变成判定问题,即是和否有限状态机,顾名思义,就是在有限个状态之间流转,即FSM的下一个状态和输出是由输入和当前状态决定的。原创 2023-01-08 23:05:26 · 2612 阅读 · 0 评论 -
观察者模式
1. 观察者模式定义 观察者模式(又被称为发布-订阅(Publish/Subscribe)模式,属于行为型模式的一种,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己。 这里举个例子,比如有一个天气的对象WeatherData,还有天气预报显示器ForecastDispl...原创 2019-03-29 22:03:08 · 130 阅读 · 0 评论 -
装饰器模式
在编码时,经常会遇到已经编写好的程序,不适合新的需求。我们的目标就是允许类容易扩展,在不修改现有代码的情况下,就可以搭配新的行为。如果能实现这样的目标,那么这样的设计就具有弹性,可以应付新的需求。 装饰器的设计原则: 1. 装饰着和被装饰对象有相同的超类型; 2. 你可以拥有一个或多个装饰器包装一个对象; 3. 既然装饰着者和被装饰对...原创 2019-03-31 11:12:42 · 135 阅读 · 0 评论 -
策略模式
在讲策略模式前,我们首先讲一下”继承“。继承(英语:inheritance)是面向对象软件技术当中的一个概念。如果一个类别B“继承自”另一个类别A,就把这个B称为“A的子类”,而把A称为“B的父类别”也可以称“A是B的超类”。继承可以使得子类具有父类别的各种属性和方法,而不需要再次编写相同的代码。 现在举个例子,以java为例:public class Animal{ ...原创 2019-03-28 21:23:47 · 112 阅读 · 0 评论 -
工厂模式
工厂模式就有三种,它们分别是简单工厂模式(并不在23中模式之中),工厂方法模式以及抽象工厂模式,其中我们通常所说的工厂模式指的是工厂方法模式,工厂方法模式是日常开发中使用频率最高的一种设计模式。 工厂方法模式是通过让子类定义该创建的对象是什么,工厂方法将生产知识封装进哥哥创建者,这样的做法,也可以被视为是一个框架。工厂方法模式定义了一个创建对象的接口,但是由子类决...原创 2019-05-06 19:01:05 · 91 阅读 · 0 评论 -
适配器模式
适配器相信大家都见过,我们使用的电脑的电源插头就会有一个适配器,在交流电和电脑之间做一个桥接和电流转换;如果你要去国外,国外的插座和你的电器的插头不匹配,但是你还是想使用自己的电器,怎么办呢?这就可以使用适配器,在国内的插头与国外的插座之间做桥接,达到电器使用的目的。换句话说,就是给电器的接口转化成了另一个接口。来,我们看定义:适配器模式是将一个类的接口,转换成客户期望的另一个接口,...原创 2019-05-22 21:47:21 · 201 阅读 · 0 评论 -
单例模式
单例的意思是有一些对象,我们只需一个,多个会造成资源浪费或者无法实施:比如,线程池、缓存、对话框等,这类对象若制造多个实例,会导致许多问题出现。 要想单例模式,可以在类内部声明一个静态方法,这个方法就是专门用来返回对象的,想要返回一个,就可以通过null判断的方式来实现,代码如下: ex1:public class MyAngle { ...原创 2019-05-23 22:18:29 · 80 阅读 · 0 评论 -
外观模式
外观模式(Facade Pattern):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式又称为门面模式,它是一种对象结构型模式。 根据“单一职责原则”,在软件中将一个系统划分为若干个子系统有利于降低整个系统的复杂性,一个常见的设计目标是使子系统间的通信和相互...原创 2019-05-28 21:52:34 · 110 阅读 · 0 评论