
设计模式
doubel_山里娃
一个程序员的经历
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
组合模式
场景实例对文件系统进行杀毒操作。本文件(单个对象)、图片、文件夹(组合对象)杀毒例子; JDK的SWING组件,里面的container就是容器构件。还有XML文件的解析,文件系统设计等等组成容器构件(文件夹) 叶子构件(文件) 抽象构件概念组合多个对象形成“树形结构”,以表示具有整体和部分的层次关系,他对单个对象和组合对象的使用具有一致性(即他们都继承一种类型的抽象类或者接口),又称为“整体--部分”模式里氏代换原则的经典实用所有的文件类型都引入抽象类,然后对抽...原创 2020-09-20 14:28:38 · 101 阅读 · 0 评论 -
装饰模式
案例分析图像界面构建系统:窗口 文本框 列表框 效果:黑色变宽 滚动条概念可以动态的为一个对象增加额外的职责(操作),因此,也可以理解为 动态的为一个对象装饰新的东西代码经验此种模式应用及其广泛,常常是一个父类充当装饰类,一个子类充当具体装饰类,子类在一个方法里面执行一些逻辑之后,经常会调用父类的某些方法,代码格式为:super.xxx(),此种操作就是属于装饰模式,也符合概念,为对象添加额外职责...原创 2020-09-20 14:27:13 · 149 阅读 · 0 评论 -
外观模式(facade)
案例文件加密模块设计。需要开发一个文件加密模块,具体流程分为三个部分:读取源文件,加密操作,保存加密后的文件; 很多系统都会采用,例如大部分的c/s提供菜单栏和工具栏,而他们就是统一的入口,称为外观模式组成部分Facade(外观角色)概念为众多的子系统接口提供一个一直的入口,这个更高层次的接口使得子系统更加容易使用,也成为门面模式。使用场景当要为访问一系列复杂的子系统提供一个简单的入口时候可以使用此模式; 客户端和子系统之间存在很大的依赖性,引入外观类可以降低子系统和客户端的耦合.原创 2020-09-20 14:26:39 · 150 阅读 · 0 评论 -
适配器模式
案例例子:算法库。引入第三方类:适配器类,符合迪米特法则。使目标类和适配着相互隔离针对抽象层编程,满足里氏代换原则定义主要解决两个接口之间的不兼容问题,此模式也成为包装器(wrapper)模式。分别有 适配器(adapter) 目标类(target) 适配者类(adaptee)组成缺省适配器如果一个接口里面定义许多方法,那么不希望实现类都实现里面的方法,此时可以定义一个抽象的缺省适配器类,来实现这接口,那么所有的子类都可以根据需求来重新实现类里面不同的方法;使用场景常...原创 2020-09-20 14:25:32 · 302 阅读 · 0 评论 -
桥接模式、装饰模式、职责链模式 区别
桥接模式桥接模式适应多个维度变化的一种模式,这些维度可能彼此之间没有什么联系,比如一个日志类,它面向多个平台,这是一种变化,记录日志的手段不同(json或xml或特定格式),这又是一种变化.桥接模式就是在于利用对象的组合(即把对象作为成员变量)将这两个维度上的变化分开。桥接模式更多体现的是一种横向的行为。abstract class Image { protected ImageImp imp; //桥接对象,即第一个变化维度 protected Per.原创 2020-09-20 14:25:12 · 328 阅读 · 0 评论 -
工厂模式(简单工厂、工厂方法、抽象工厂)
简单工厂模式优点: 1、一个工厂创建许多物品,通过条件判断,创造不同的物品 2、实现创建和使用的分离。符合单一职责原则,通过引入第三方类工厂类,符合迪米特法则缺点:1、工厂类逻辑过重,一旦不能正常工作,整个系统都瘫痪2、不符合开闭原则。一旦增加新的商品,需要修改工厂类方法工厂方法模式一个工厂创建一个商品优点:1、符合迪米特法则2、满足了开闭原则缺点:‘类会增加抽象工厂一个工厂创建一组产品...原创 2020-09-20 14:19:27 · 179 阅读 · 0 评论 -
设计模式原则
1、单一职责原则一个类只负责一个功能2、开闭原则对修改关闭 对扩展开发3、里氏代换原则(面向接口或者抽象类)父类引用可以指向子类对象。程序中尽量使用基类类型对对象进行定义,(Animall p = new person()),运行时候确定其子类的类型,用子类对象替换父类对象,(Person p1 = (Person)p)也就是面向抽象类或者接口编程。可以很好的扩展系统,增加新的功能,只需要增加一个新的子类实现即可,无需修改原有子类的代码4、接口隔离使...原创 2020-09-20 14:18:50 · 146 阅读 · 0 评论 -
概述
针对抽象层编程,即必须符合里氏代换原则 引入第三方类解决一些问题,这个类可以是抽象的类,也可以是具体的类。即满足迪米特法则。例如:适配器模式引入适配着类、工厂模式引入工厂类,装饰模式引入抽象的第三方装饰类 领悟职责链模式和装饰类模式的应用方法。知道类之间可以通过顺序调用的方式来满足一些业务需求,例如tomcat的过滤器就是类似的实现。...原创 2020-09-20 14:18:08 · 115 阅读 · 0 评论 -
设计模式原则
单一职责原则 一个类只负责一个功能 2、开闭原则 对修改关闭 对扩展开发 3、里氏代换原则(面向接口或者抽象类) 父类引用可以指向子类对象。程序中尽量使用基类类型对对象进行定义,(Animall p = new person()),运行时候确定其子类的类型,用子类对象替换父类对象,(Person p1 = (Person)p)也就是面向抽象类或者接口编程...原创 2019-01-22 22:53:53 · 142 阅读 · 0 评论 -
设计模式之-迭代器模式
软件开发中常会出现这样一种情况,一个接口里面有某类数据的增删改,也有这类数据的遍历方法,对于子类来说实现这个借口,则必须实现所有的借口方法,一旦想要更改一种新的遍历方式,则需要修改借口。这就违背了软件设计的开闭原则。同时,由于过多的借口方法设计在借口里面,这样任何一个子类都必须实现所有的方法,造成子类对象的溶于,很可能有些方法不是子类所需要的,同样这样也违背了接口隔离原则,当然要想严格的遵守接口隔原创 2013-05-02 23:16:20 · 649 阅读 · 0 评论 -
设计模式之命令模式
先看简单的命令模式代码实现:/** * 客户端调用类 * @author 光腚 * */public class Client { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub FunctioinButton but原创 2013-07-02 22:47:53 · 743 阅读 · 0 评论 -
设计模式-策略模式
先来理解生活中的一些现象,在很多生活当中会遇到这样的情况,我们去一个目的地,可以有不同的方式,可以选择火车,汽车, 飞机,也可以选择不同的路线,这些不同的方式也就是不同的策略,在软件开发过程中,也会有一些类似的情况,实现一个功能,可能有很多种途径,为了诞生了策略模式。来分析一个案例,某电影院开发一个票价系统,而票价每周会有不同的打折方式。例如,10岁以下的孩子,享受减10元的票价优惠,VIP则原创 2013-05-07 22:30:21 · 738 阅读 · 0 评论 -
设计模式 - 命令模式
我们先来分析一种常见的现象,我们都开关可以通过通过电线控制灯的开关,也可以更换电线控制门的开关等等此类的现象。仔细分析此类现象不难发现,我们想控制什么样的东西只需要更换相关的电线(可能不同的电器有自己相配套的电线标准),然后连接到同一个开关上既可以实现功能。如果我们把开关理解为消息请求者,把各种电器理解为不同的请求处理着,当请求者需要控制不同的请求处理着的时候,只需要更换电线,对于请求者自身不需要原创 2013-05-01 22:26:23 · 679 阅读 · 0 评论 -
桥接模式
这里不详细介绍,只用几句简单的话来概括此模式的核心内容。此模式也成为接口模式,解决了多继承的带来的扩展难的问题,而往往由于多继承而导致了扩展比较困难的原因往往就是我们在设计类的时候违反了单一职责的原则,或者是没有从深层次明白什么叫继承,各个类只有存在一定的关系,即子类是父类的一种类型,这样情况才可以使用继承,否则就容易造成继承困难的情况。在这样一种情况下,可以把不是属于 这个类型的类抽原创 2013-06-27 23:59:52 · 766 阅读 · 0 评论