![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
设计模式
SuperSources
这个作者很懒,什么都没留下…
展开
-
【设计模式】享元模式
通过共享内部状态、加载外部状态来实现享元模式利用享元模式模拟五子棋的操作package Flyweight;public abstract class AbstractChess { protected int x; protected int y; public abstract void operate(int x, int y);}package Flyweight;public class BlackChess extends AbstractChess { publ原创 2020-08-23 14:22:32 · 187 阅读 · 0 评论 -
【设计模式】建造者模式
建造者模式(生成器Builder)本质: 分离整体构建算法和部件构造将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示建造者(Builder)角色:定义创建一个Product对象所需的各个部件的操作具体建造者(Concrete Builder)角色:实现Builder角色提供的接口,一步一步完成创建产品实例的过程。在建造过程完成后,提供产品的实例。指导者(Director)角色:主要用来使用Builder接口,以一个统一的过程来构建所需要的Product对象原创 2020-08-23 14:15:24 · 180 阅读 · 0 评论 -
【设计模式】桥接模式
引入考虑这样一个实际的业务功能:发送提示消息。基本上所有带业务流程处理的系统都会有这样的功能,比如某人有新的工作了,需要发送一条消息提示他。从业务上看,消息又分成普通消息、加急消息和特急消息多种,不同的消息类型,业务功能处理是不一样的,比如加急消息是在消息上添加加急,而特急消息除了添加特急外,还会做一条催促的记录,多久不完成会继续催促。从发送消息的手段上看,又有系统内短消息、手机短消息、邮件等。若不用模式开发若继续添加特急消息继续添加发送手机消息的处理方式通过这种继承的方式来扩展消息处理原创 2020-08-23 12:10:47 · 177 阅读 · 0 评论 -
【设计模式】单例模式
单例模式本质:控制实例数目我们怎样去创建一个唯一的变量(对象)保证一个类仅有一个实例,并提供一个访问它的全局访问点。Singleton模式包含的角色只有一个,就是Singleton。Singleton拥有一个私有构造函数,确保用户无法通过new直接实例它。除此之外,该模式中包含一个静态私有成员变量instance与静态公有方法GetInstance。GetInstance方法负责检验并实例化自己,然后存储在静态成员变量中,以确保只有一个实例被创建。特点:单例类只能有一个实例。单例类必须自原创 2020-08-23 11:13:17 · 103 阅读 · 0 评论 -
【设计模式】迭代器模式
迭代器模式本质:逐一遍历提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示如:最简单的:.Net中的foreach inJava中的for(Leaf leaf:childLeaf){…}组合模式与迭代器模式这两个模式可以组合使用,在组合模式中,通常可以使用迭代器模式来遍历组合对象的子对象集合,而无需关心具体存放子对象的聚合结构...原创 2020-08-23 10:38:15 · 134 阅读 · 0 评论 -
【设计模式】组合模式
组合(Composite)模式组合模式有时又叫做部分-整体模式(Part-Whole)。组合模式将对象组织到树结构中,可以用来描述整体与部分的关系。组合模式可以使客户端将单纯元素与复合元素同等看待。...原创 2020-08-23 01:11:11 · 137 阅读 · 0 评论 -
【设计模式】备忘录模式
备忘录模式(Memento)本质:保存和恢复内部状态原创 2020-08-22 13:12:41 · 136 阅读 · 0 评论 -
【设计模式】适配器模式
适配器模式(Adapter)本质:转换匹配,复用功能原创 2020-08-22 01:36:34 · 123 阅读 · 0 评论 -
【设计模式】状态模式
状态(State)模式本质:根据状态来分离和选择行为。状态模式是状态驱动,由上下文负责原创 2020-08-22 01:35:25 · 169 阅读 · 0 评论 -
【设计模式】观察者模式
观察者模式(Observer)本质:触发联动观察者模式又叫做:发布-订阅(Publish/Subscribe)模式模型-视图(Model/View)模式源-监听器(Source/Listener)模式从属者(Dependents)模式。观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。抽象主题(Subject)角色:一个目标可以被多个观察者观察目标提供对观察者注册和退订的维护原创 2020-08-22 01:32:00 · 228 阅读 · 0 评论 -
【设计模式】抽象工厂模式
抽象工厂模式(AbstractFactory)本质:选择产品族的实现原创 2020-08-20 01:16:15 · 294 阅读 · 0 评论 -
【设计模式】外观模式
外观(Facade)模式(门面模式)本质:封装交互、简化调用外部与一个子系统的通信必须通过一个统一的外观(Facade)对象进行,这就是外观模式。外观模式要求一个子系统的外部与其内部的通信必须通过一个统一的外观(Facade)对象进行。外观模式提供一个高层次的接口,使得子系统更易于使用。就如同医院的接待员一样,外观模式的外观类将客户端与子系统的内部复杂性分隔开,使得客户端只需要与外观对象打交道,而不需要与子系统内部的很多对象打交道。符合迪米特法则(Law of Demeter或简写LoD)又叫最少原创 2020-08-20 01:13:58 · 103 阅读 · 0 评论 -
【设计模式】模板方法模式
模板方法模式用意:准备一个抽象类,将部分逻辑以具体方法以及具体子类的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。模板方法模式的定义:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。模板方法模式是基于继承的代码复用的基本技术,模板方法模式的结构和用法也是面向对象设计的核心抽象模版(AbstractClass)定义了一个或多个抽象操作,原创 2020-08-19 23:44:11 · 166 阅读 · 0 评论 -
【设计模式】原型模式
原型(Prototype)模式本质:克隆生成对象原型模式的用意是:通过给出一个原型对象来指明所要创建的对象类型,然后用复制这个原型对象的办法创建出更多的同类型对象。克隆的实现方法有两种:浅拷贝(shallow copy)与深拷贝(deep copy)浅拷贝:只负责克隆按值传递的数据(比如基本数据类型、String类型)深拷贝:除了浅拷贝要克隆的值外,还负责克隆引用类型(属性的类型也是对象)的数据。客户(Client)角色:客户类提出创建对象的请求抽象原型(Prototype)角色:这是一原创 2020-08-19 22:19:08 · 118 阅读 · 0 评论 -
【设计模式】工厂方法模式
回顾简单工厂模式Simple Factory模式根据提供给它的数据,返回几个可能类中的一个类的实例。通常它返回的类都有一个公共的父类和公共的方法。工厂类角色Creator (LightSimpleFactory):工厂类在客户端的直接控制下(Create方法)创建产品对象。抽象产品角色Product (Light):定义简单工厂创建的对象的父类或它们共同拥有的接口。可以是一个类、抽象类或接口。具体产品角色ConcreteProduct (BulbLight, TubeLight):定义工厂具体加工原创 2020-08-19 16:59:30 · 209 阅读 · 0 评论 -
【设计模式】代理模式
引入——追求者送礼物class SchoolGirl{ private string name; public string Name { get { return name; } set { name = value; } }}interface GiveGift{ void GiveDolls(); void GiveFlowers(); void GiveChocolate();}class原创 2020-08-19 16:08:13 · 225 阅读 · 0 评论 -
【设计模式】装饰模式
装饰模式本质:动态组合: 动态是手段,组合是目的装饰(Decorator)模式又名包装(Wrapper)模式[GOF95]。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。装饰模式常常被称为包裹模式,就是因为每一个具体装饰类都将下一个具体装饰类或者具体构件类包裹起来。装饰模式为对象添加额外责任的方式就像做蛋糕一样,一圈一圈的加上去,中间的面包是核心,是被装饰的对象(Concrete Component,下面的例子中是person),是核心任务,外围的都是装饰对象(Decora原创 2020-08-19 13:59:44 · 230 阅读 · 0 评论 -
【设计模式】常见面向对象设计原则
引言设计原则是思想上的指导设计模式是实现上的手段设计模式是设计原则的具体体现在实际开发中,很少做到完全遵守,总是在有意无意的违反一些或者部分原则设计是一种危险的平衡艺术单一职责原则(SRP)Single Responsibility PrincipleThere should never be more than one reason for a class to change.就一个类而言,应该仅有一个引起它变化的原因(职责)。如果一个类承担的职责过多,就等于把这些职责耦合在一起,一原创 2020-08-19 01:13:14 · 119 阅读 · 0 评论 -
【设计模式】访问者模式
利用访问者模式模拟实现拓展客户管理系统(CRM)涉及客户:个人客户、企业用户涉及服务:提出服务申请、客户价值分析、客户对产品的偏好分析package visitor;public abstract class Analysis { public abstract void ManageIndividual(Individual i); public abstract void ManageEnterprise(Enterprise e);}package visitor;p原创 2020-06-13 21:42:12 · 286 阅读 · 0 评论 -
【设计模式】中介者模式
引入在面向对象系统的设计和开发过程中,对象之间的交互和通信是最为常见的情况,因为对象间的交互本身就是一种通信。在系统比较小的时候,可能对象间的通信不是很多、对象也比较少,我们可以直接硬编码到各个对象的方法中。当系统规模变大,对象的量变引起系统复杂度的急剧增加,对象间的通信也变得越来越复杂,这时候我们就要提供一个专门处理对象间交互和通信的类,这个中介者(Mediator)模式中介者模式本质:封装交互Mediator模式将对象间的交互和通信封装在一个类中,各个对象间的通信不必显式去声明和引用,大原创 2020-06-04 20:49:18 · 285 阅读 · 0 评论 -
【设计模式】职责链模式
职责链可能是一条直线、一个环链或者一个树结构的一部分。客户端发出一个请求,会有很多对象都可以来处理这个请求,而且不同对象的处理逻辑是不一样的。对于客户端而言,无所谓谁来处理,反正有对象处理就可以了。而且在上述处理中,还希望处理流程是可以灵活变动的,而处理请求的对象需要能方便地修改或者是被替换掉,以适应新的业务功能的需要。职责链(Chain of Responsibility)模式本质:分离职责,动态组合使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并原创 2020-06-04 20:18:00 · 288 阅读 · 0 评论 -
【设计模式】高内聚、低耦合
模块耦合主要描述模块之间的关系, 内聚主要描述模块内部。 模块的粒度可大可小, 可以是函数, 类, 功能块等等模块就是从逻辑上将系统分解为更细微的部分, 分而治之, 复杂问题拆解为若干简单问题, 逐个解决。也就类似于子系统的感觉。耦合藕合?哈哈哈搞错了再来!是介个耦合!耦合也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。模块之间存在依赖, 导致改动可能会互相影响,原创 2020-06-04 18:40:25 · 775 阅读 · 0 评论 -
【设计模式】命令模式
引入客户端只是想要发出命令或者请求,不关心请求的真正接收者是谁,也不关心具体如何实现,而且同一个请求的动作可以有不同的请求内容,当然具体的处理功能也不一样。命令模式(Command)本质:封装请求命令模式又称为行动(Action)模式或交易(Transaction)模式。命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化;对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。( Command模式可以和备忘录(Memento)模式结合起来,支持Undo的操原创 2020-06-04 18:20:04 · 306 阅读 · 0 评论 -
【设计模式】策略模式
类的划分原则面向对象的编程,并不是类越多越好,类的划分是为了封装,但分类的基础是抽象,具有相同属性和功能的对象的抽象集合才是类。原创 2020-04-06 01:45:26 · 361 阅读 · 0 评论 -
【设计模式】简单工厂模式
本质:选择实现集中控制Simple Factory模式根据提供给它的数据,返回几个可能类中的一个类的实例。通常它返回的类都有一个公共的父类和公共的方法。原创 2020-03-13 09:45:07 · 286 阅读 · 0 评论 -
【设计模式】设计模式概述
定义是指在软件开发中,经过验证的, 用于解决在特定环境下、重复出现的、特定问题的解决方案。是一套被反复使用、 多数人知晓的、经过分类编目的、代码设计经验 的总结。使用设计模式是为了可重用代码、让代 码更容易被他人理解、保证代码可靠性。历史GoF(Gang of Four“四人帮”,指Gamma, Helm, Johnson & Vlissides四人)的《设计模式》第一次将设计模式...原创 2020-03-05 20:31:31 · 108 阅读 · 0 评论