
设计模式
mango_love
习而简之,简而精之
展开
-
面向对象设计原则
面向对象设计原则为支持可维护性复用而诞生,这些原则蕴含在很多设计模式中,它们是从许多设计方案中总结出的指导性原则。面向对象设计原则也是我们用于评价一个设计模式的使用效果的重要指标之一。在面向对象设计中,可维护性的复用是以设计原则为基础的。每一个原则都蕴含一些面向对象设计的思想,可以从不同的角度提升一个软件结构的设计水平。下面介绍7种设计原型...原创 2018-05-10 23:06:26 · 574 阅读 · 0 评论 -
解释器模式(Interpreter Pattern)
解释器模式:给定一个语言,定义它的文法的一种表示,并且定义一个解释器,这个解释器使用该表示来解释语言中的句子。解释器模式结构AbstractExpression(抽象表达式):在抽象表达式中声明了抽象的解释操作,它是所有终结符和非终结符表达式的公共父类。abstract class AbstractExpression{ public abstract string I...原创 2019-07-27 22:16:23 · 422 阅读 · 0 评论 -
命令模式(Command Pattern)
命令模式(Command Pattern):将一个请求封装为一个对象,从而让你可以用不同的请求对客户进行参数化,对请求排队或者记录请求日志,以及支持可撤销操作。命令模式的结构Command(抽象命令类):提供具体类执行方法和撤销方法的一个模板。abstract class Command{ public abstract void Execute();}Concr...原创 2019-07-20 21:52:25 · 264 阅读 · 0 评论 -
职责链模式(Chain of Responsibility Pattern)
职责链模式(Chain Of Responsibility Pattern):避免将一个请求的发送者和接收者耦合在一起,让多个对象都有机会处理请求,将接受请求的对象连接成一条链,并且沿着链传递请求,知道有一个对象能狗处理它为止职责链模式的结构Handler(抽象处理者):它定义一个处理请求的接口,由于不同的具体处理者处理请求不同,因此在处理者中定义一个处理请求的方法,每个处理者...原创 2019-07-20 18:02:11 · 746 阅读 · 0 评论 -
代理模式(Proxy Pattern)
在电子商城新起的时代里,某宝某东的大型电商平台假货也是非常多而且价格还不菲或是在这些电商平台购不到的一些商品,从而衍生出一种专门从海外进行购物的一群人,我们称之为代购,一般来说,代购是从国内接到一些需求,从而到海外进行选购带回国内的一种中间商。在软件开发过程种有一种设计模式可以提供类似代购的功能,由于一些原因客户端不想直接或者不能直接访问到一个对象,此时添加一个代理类,通过这个代理来间接访问这...原创 2019-07-20 18:03:08 · 214 阅读 · 0 评论 -
享元模式(Flyweight Pattern)
我们知道机器语言识别的只有0和1,我把这两个元素存到一个实例里面,每次使用的时候去调用它,而不是使用的时候直接去new一个对应的对象,这样是非常消耗内存的,我们把这个收藏1和0的容器称之为享元库。享元模式(Flyweight Pattern):运用共享技术有效地支持大量细粒度对象的复用享元模式的结构Flyweight(抽象享元类):抽象享元类通常是接口或者抽象类声明具体享元类...原创 2019-06-30 12:27:59 · 303 阅读 · 0 评论 -
外观模式(Facade Pattern)
mango公司最新研发了一块app刚刚发布就受到了用户的青睐,用户也提出许多反馈,产品经理根据用户反馈最多的问题来提出迭代一个版本:用户反馈咱们的app主题单一,为了广大用户的需求,需要对app的主题进行扩充。开发小组进行讨论,如果我们添加不同的主题,每个页面就得新增不同的主题页面这样太浪费时间并且工作量巨大。改变主题主要是改变页面的样式,我们只需要多做几套样式,根据用户的切换或者配置给予相应...原创 2019-06-30 09:26:16 · 267 阅读 · 0 评论 -
装饰模式(Decorator Pattern)
借用一张百度图片,我们在装修完房屋的后会在家里买一些点缀的家具,比如说客厅里面贴一些壁纸、挂上一些照片、摆上沙发茶几、弄几个盆栽...等等,这样一个温馨的家完成了。装饰模式是一种用于代替继承的技术,它通过一种无须定义子类的方式给对象动态增加职责,使用对象之间的关联关系取代继承关系,在装饰模式中引入一个装饰类,这个类既可以调用待装饰方法也可以新增新的方法,来扩展原有的类的功能。装饰者模式...原创 2019-06-29 23:34:49 · 285 阅读 · 0 评论 -
组合模式(Composite Pattern)
如上图是一个Windows目录结构的截图,我们发现目录里面有文件、文件夹,文件夹下面可以放文件文件夹,但是文件里面不可以放文件和文件夹,这样我们遍历这个目录下所有文件的时候,我们采用递归的方式层层遍历,直到所有文件夹下面的文件都遍历为止。我们这样遍历的时候每次都需要区分是不是文件夹,有些时候客户需要对他们进行一致性的对待,这样我们只有遍历每个节点就行,不需要对其进行区分。组合模式(Comp...原创 2019-06-29 17:25:44 · 268 阅读 · 0 评论 -
桥接模式(Bridge Pattern)
我们逛某宝买衣服一般是先看款式,挑到自己喜欢的款式接下来就是看看衣服的颜色和适合自己的尺码,太大太小不合身,颜色不搭配都是很可怕的事情。衣服的颜色和尺码是影响衣服变化的两个维度,客户可根据自己的需求来选择自己心仪适合的衣服,所以今天给大家带来设计模式是桥接模式,桥接模式将两个变化的维度设计为两个独立变化的结构,使用一个第三方的抽象层来关联,这个抽象层就好比是一座桥,两个独立变化的结构就好像是河...原创 2019-06-29 14:47:24 · 318 阅读 · 0 评论 -
单例模式(Singleton Pattern)
小明的水果店越来越红火,小明想做一个微信公众号做推广并且发优惠券,当然这个公众号是小明这个店铺的唯一推广公众号单例模式(Singleton Pattern):一个类只有一个实例,并且提供一个全局访问点来访问这个唯一的实例单例模式的结构实现单例模式需要达成两个条件:1.该类不可实例化2.提供一个私有的静态工厂方法根据加载时间可以分为两种:在运行时创建,也可以称之为饿...原创 2019-05-29 23:40:58 · 561 阅读 · 0 评论 -
设计模式学习目录
设计模式的定义设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,使用设计模式是为了可重用代码、让代码更容易被他人理解并且保证代码可靠性。UML类图基础知识:UML类图介绍和元素信息UML类图对应关系和对应代码面向对象的七种设计原则:1.开闭原则(Open-Closed Principle)2.单一职责原则(...原创 2019-05-29 14:59:15 · 519 阅读 · 0 评论 -
原型模式(Prototype Pattern)
小明的水果点即将开业,需要做一些宣传和优惠券,这时我们只需要一张优惠券然后通过打印店复制一大堆,下次还需要搞活动的时候直接拿去复印就好了,不需要每一张每一张手动的去重新制作。我们这里可以使用原型模式,他是一种对象创建型设计模式,将一个原型对象传递给要发动创建的对象(客户端对象),这个创建者通过请求原型对象复制自己来创建的过程。原型模式(Protetype Pattern):使用原型实例指定待创...原创 2019-05-28 23:16:47 · 914 阅读 · 0 评论 -
适配器模式(Adapter Pattern)
小明的水果店远近闻名,招来了很多外国朋友,但是小明有不会英文,没办法跟他们沟通,所以小明请了一个翻译既懂英文又懂中文的小翻译。这个翻译通过把英文转换成中文跟小明对话。一般来说这个翻译我们称之为适配器适配器模式(Adapter Pattern):将一个类的接口转换成客户希望的另一个接口,适配器模式让那些接口不兼容的类可以一起工作适配器模式的结构Target(目标抽象类):目标抽...原创 2019-05-30 23:44:59 · 722 阅读 · 0 评论 -
建造者模式(Builder Pattern)
小明的水果店开了几天生意红火,小明发现水果要是能几种类型一起卖就好了这样不仅卖得快而且收益也不低,小明决定几种水果拼在一起卖固定20块钱一个拼盘,这样顾客花20块钱就可以吃到不同的水果了建造者模式(Builder Pattern):将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示建造者模式是一种对象创建型模式,它将客户端与多个部件的复杂对象的创建过程分离,客户端无...原创 2019-05-27 22:55:22 · 407 阅读 · 0 评论 -
抽象工厂模式(Abstract Factory Pattern)
小明的水果店生意特别好又得去批发市场进货,这里有好几家批发商,有卖青苹果、红苹果的,有的卖贡梨、雪梨的,但是顾客一般比较喜欢红苹果和雪梨。如果我们在设计使用工厂方法的时候,需要增加4*2个产品等级结构的类,如果我们使用抽象工厂模式来解决这个 问题那么我们只需要2*2个类就搞定。当系统所提供的工厂的具体产品并不是一个简单的对象,而是多个位于不同产品等级结构属于不同类型的具体产品的时候就可以使用抽象工...原创 2019-05-26 22:41:28 · 546 阅读 · 0 评论 -
工厂方法模式(Factory Method Pattern)
水果店开业在即,小明需要去进货,考虑到水果的种类和成本问题决定先去探访一下货源和价格,小明发现苹果在A商那边便宜2毛,西瓜在Z商那边便宜3毛,榴莲在C商那边便宜4毛。这里每一个商贩是一个工厂,每个工厂提供不同的水果,下面我们来介绍工厂方法模式工厂方法模式(Factory Method Pattern):定义一个用于创建对象的接口,但是让子类决定哪一个类实例化,工厂方法模式让一个类的实例化延迟到...原创 2019-05-25 17:20:44 · 600 阅读 · 0 评论 -
迭代器模式(Iterator Pattern)
C#内置迭代器解析迭代器模式:提供一种方法顺序访问一个聚合对象中的各个元素,且不用暴露该对象的内部表示。迭代器模式又称为游标模式。迭代器模式的结构Iterator(抽象迭代器):定义访问遍历元素的接口,声明便利元素的方法public interface Iterator{ void First(); void Next(); void HasN...原创 2019-07-27 23:16:20 · 374 阅读 · 0 评论