
设计模式 之路
设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。
悟世君子
发上等愿,结中等缘,享下等福 择高处立,寻平处坐,向宽处行
展开
-
设计模式 之 7大设计原则
1、7大设计原则开闭原则(Open Closed Principle,OCP)依赖倒置原则(Dependence Inversion Principle,DIP)单一职责原则(Single Responsibility Principle,SRP)接口隔离原则(Interface Segregation Principle,ISP)迪米特法则(Law of Demeter,Lo...原创 2019-07-08 15:42:43 · 341 阅读 · 0 评论 -
简单工厂模式
工厂模式是最常用的一类创建型设计模式。通常说的工厂模式是指工厂方法模式,简单工厂不属于GoF 23 种设计模式,但在开发中使用也极为频繁,通常把它做为学习其他工厂模式的入门简单工厂模式(Simple Factory Pattern):定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。因为在简单工厂模式中用于创建实例的方法是静态方法,因此简单工厂又被称...原创 2019-07-09 11:05:18 · 229 阅读 · 0 评论 -
工厂方法模式
相对于简单工厂模式,在工厂方法模式中,不在提供一个工厂类来创建所有的产品对象,而是针对不同的产品提供不同的工厂,系统提供一个与产品等级结构对应的工厂等级结构工厂方法模式(Factory Method Pattern):定义一个用于创建对象的接口或抽象类,让子类决定将哪一个类实例化。工厂方法模式让一个类的实例化延迟到其子类。工厂方法模式又称工厂模式(Factory Pattern),又称虚...原创 2019-07-09 17:31:08 · 217 阅读 · 0 评论 -
抽象工厂模式
在工厂方法模式中,具体工厂生产具体的产品,每一个具体的工厂对应一种具体的产品,工厂方法具有唯一性。但有时候,希望一个工厂可以生产多个产品对象,而不是单一的产品对象,如一个电器工厂,既可以生产电视机,也可以生产电冰箱、空调、电饭锅等多种电器,而不是只生产一种电器,这时就需要抽象工厂模式为了更好理解抽象工厂模式,先引入两个概念,产品等级结构和产品族产品等级结构:产品等级结构,也可以称为产...原创 2019-07-10 18:17:47 · 267 阅读 · 0 评论 -
建造者模式
建造者模式,又称为生成器模式,是一种较为复杂、使用频率不高的创建型模式。它为客户端返回的不是一个简单的产品,而是有多个部件组成的复杂产品。以手机为例,建造者模式返回的是一个完整的手机产品,而不是手机的各个部件,显示屏、听筒、主板、电源等,如何将这些部件组装成一个完整的手机给用户,这正是建造者模式解决的问题建造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使...原创 2019-07-11 18:29:22 · 224 阅读 · 0 评论 -
单例模式(饿汉模式)
单例模式是结构最简单的设计模式,用于创建软件系统中独一无二的对象;但如果深入研究,单例模式也是最复杂的设计模式单例模式(Singleton Pattern):确保某一个类只有一个实例,且自行实例化,并向整个系统提供这个实例。单例模式是一种对象创建型模式单例模式有两种不同的实现方式,饿汉式单例模式(Eager Singleton)和懒汉式单例模式(Lazy Singleton)...原创 2019-07-15 17:27:13 · 8260 阅读 · 1 评论 -
单例模式(懒汉模式)
单例模式是结构最简单的设计模式,用于创建软件系统中独一无二的对象;但如果深入研究,单例模式也是最复杂的设计模式单例模式(Singleton Pattern):确保某一个类只有一个实例,且自行实例化,并向整个系统提供这个实例。单例模式是一种对象创建型模式单例模式有两种不同的实现方式,饿汉式单例模式(Eager Singleton)和懒汉式单例模式(Lazy Singleton)相比...原创 2019-07-16 12:03:50 · 9283 阅读 · 1 评论 -
原型模式
原型模式(Prototype Pattern):通过原型实例指定创建对象的种类,并且通过克隆这些原型来创建新的对象。原型模式是一种创建型模式完成原型模式一般需要3个角色,抽象原型类、具体原型类、客户类抽象原型类:声明克隆方法的接口、抽象类或具体实现类。是所有具体原型类的公共父类具体原型类:实现抽象原型类,实现抽象原型类中的克隆方法,并在克隆方法中返回自己的一个克隆对象客户类:...原创 2019-07-17 17:56:55 · 239 阅读 · 0 评论 -
外观模式
外观模式(Facade Pattern):又称门面模式。外部通过一个统一的接口,访问子系统中的一群接口。外观模式定义了一个高层接口,为子系统中的一组接口提供了一个一致的入口,使得子系统更容易使用。外观模式是一种对象结构型模式外观模式结构中,包含两个角色,外观角色和子系统角色外观角色(Facade):客户端调用这个角色,通过外观角色将客户端的请求委派到相关的子系统中子系统角色(Su...原创 2019-07-18 11:41:57 · 327 阅读 · 0 评论 -
装饰者模式
装饰者模式,在不改变一个对象本身功能的基础上给对象增加额外的新行为。比如,我们到书店买书,在不改变书籍本身的基础上,赠送个书签,或者要个包装袋装饰者模式(Decorator Pattern):在不改变原有对象的基础上,动态的给对象增加一些额外的职责。就给对象增加功能来说,装饰者模式比继承的方式更加灵活。装饰者模式是一种对象结构型模式装饰者模式,无须定义子类动态给对象增加职责,用对象之...原创 2019-07-19 11:19:30 · 273 阅读 · 0 评论 -
适配器模式
适配器模式,顾名思义,起适配的作用,它类似于我们的手机充电适配器,将220V的电压转换成5v的电压。当然,在编程的世界里,是不存在电压的,而是将不同的接口进行适配适配器模式(Adapter Pattern):将一个接口转换成客户希望的另一个接口。使得原本接口不兼容的类可以一起工作。适配器模式是对象结构型模式适配器模式中的接口是广义上的接口,它可以表示一个方法、或方法的集合。适配器模式...原创 2019-08-05 11:17:27 · 215 阅读 · 0 评论 -
享元模式
当系统中出现大量相同、相似的对象时,会导致系统性能下降。享元模式通过共享技术对相同或相似对象进行重用,从而解决这一问题。在享元模式中,存储共享实例对象的地方称为享元池 (Flyweight Pool)享元模式(Flyweigh Pattern):运用共享技术支持大量细粒度对象的复用。又称为轻量级模式,是一种对象结构型模式共享模式有内部状态和外部状态之分内部状态:即存储在享元...原创 2019-08-05 21:51:51 · 188 阅读 · 0 评论 -
组合模式
树形结构在软件中十分常见,如操作系统中的文件结构,文件夹包含文件和子文件夹,而子文件夹又包含文件和子子文件夹,像这样的结构称为树形结构。在树形结构中,文件夹或子文件夹称为容器(Container);而不同类型的文件称为叶子(Leaf)。在树形结构中,由于容器对象和叶子对象在功能上的区别,导致必须有区别地对待容器对象和叶子对象,这将使程序变得复杂。而实际开发中,我们更希望一致地处理它们,由此引出了组...原创 2019-08-07 16:56:17 · 354 阅读 · 0 评论 -
桥接模式
桥接模式,有些类似排列组合,下面先引用一个非常经典的例子来理解桥接模式。假如某位画画爱好者去买画笔,他需要大、中、小三种型号且具有6种颜色的画笔,如果买彩笔,他需要买3×6=18枝;如果买水彩,他需要3枝笔和6种水彩颜料。如果将它们看做是程序世界里的对象的话,第一种方案需要3×6=18个对象;而第二种方案需要3+6=9个对象。如果增加一种颜色,第一种方案需要增加大、中、小三种型号的画笔,即增加3个...原创 2019-08-09 11:52:05 · 1755 阅读 · 5 评论 -
代理模式
大家可能会有这样的经历,想买某样国外商品,可自己又不能去国外,这时可能会找代购帮忙购买,你只需要将想买的东西告诉代购,由他去和国外商家购买,而你不需要直接和国外商家交流。类似的这种操作,在程序世界里,叫做代理模式代理模式(Proxy Pattern):给某个对象提供一个代理,并且由代理对象控制对原对象的引用。代理模式是一种对象结构型模式完成代理模式需要3个角色抽象角色(Su...原创 2019-08-11 19:06:58 · 221 阅读 · 0 评论 -
模板方法模式
生活中有很多按步骤才能完成的事,比如我们想进房间,需要先将门打来,然后才能进去,进去之后再把门关上。开门和关门是固定的步骤,而进入房间的步骤则不是固定的,它可以有多种方式,走着进去、跑着进去、跳着进去等都可以。类似这种多个步骤才能完成的事,在软件世界称之为模板方法模式模板方法模式(Template Method Pattern):定义了一个操作中的算法框架,并将一些步骤延迟到子类中。使得...原创 2019-08-13 14:41:48 · 201 阅读 · 0 评论 -
迭代器模式
在软件开发中,可以存储多个成员对象的类称为聚合类(Aggregate Classes),对应的对象称为聚合对象。迭代器模式可以让客户端在无须了解聚合对象的内部结构的情况下,即可实现对聚合对象中的成员的遍历迭代器模式(Iterator Pattern):提供一种方法访问聚合对象,而不用暴露该对象的内部实现。别名为游标(Cursor)。是一种对象行为型模式完成迭代器模式至少要4个角...原创 2019-08-13 19:35:12 · 221 阅读 · 0 评论 -
策略模式
生活中,要去某地有多种出行方式,步行、骑车、坐车等,每一种方式就是一个策略。在软件开发中,实现一个功能有多种算法,策略模式就是用来选择使用哪种算法的策略模式(Strategy Pattern):定义一系列算法类,将它们分别封装起来,且它们之间可以相互替换。算法的变化不会影响客户。策略模式又称为政策模式(Policy Pattern),是一种对象行为型模式完成策略模式需要至少3个...原创 2019-08-14 12:19:16 · 281 阅读 · 0 评论