设计模式
文章平均质量分 63
对java设计模式的分析介绍,更好的帮助去理解,去写出优美的代码。
奔跑吧,高同学
锲而不舍,天道酬勤。码路漫漫,吾心灿灿。
展开
-
23种设计模式9_命令模式
23种设计模式9_命令模式 1 基本介绍 命令模式:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和回复功能。 UML类图如下: 从类图种可以看出,有三种角色: Invoker调用者 协调调用命令,什么命令由谁来执行。 Command命令 命令角色,需要执行的命令的详细内容都封装在命令角色里面。 Receiver接收者 这个角色就是命令内容的具体的干活的人。 2 通用代码演示 Receiver调用者 public abstract class原创 2021-04-06 16:14:03 · 71 阅读 · 0 评论 -
23种设计模式8_中介者模式
23种设计模式8_中介者模式 1 基本介绍 中介者模式:用一个中介者对象封装一系列对象的交互关系,从而使各个对象之间不需要显式的相互作用,降低他们的耦合性,而且可以独立地改变他们之间的交互。 UML类图如下: 从类图中可以看出有三种角色: Mediator抽象中介者角色 抽象中介者角色定义统一接口,用于各同事之间的通信。 ConcreteMediator具体中介者角色 具体中介者角色通过协调各同事角色实现协作行为,因此他必须依赖各个同事角色。 Colleague同事类角色 同事类角色与其他同事类角色进行交原创 2021-03-25 10:07:34 · 183 阅读 · 0 评论 -
23种设计模式7_代理模式之二动态代理
23种设计模式7_代理模式之二动态代理 1 基本介绍 代理模式:为其他对象提供一种代理以控制对这个对象的访问 代理模式也叫委托模式,它是一项基本设计技巧。许多其他的模式,如状态模式、策略模式、访问者模式本质上都是在更加特殊的场合采用了代理模式。在日常开发应用种,代理模式能够提供非常好的访问控制。 代理可分为两种:一种是静态代理,由程序员创建或由特定工具自动生成源代码,再对其编译。在程序运行前,代理类的**.class**文件就已经存在了;另一种是动态代理:在程序运行时,运用反射机制动态创建而成。 静态代理通原创 2021-03-24 14:21:36 · 284 阅读 · 2 评论 -
23种设计模式7_代理模式之一静态代理
23种设计模式7_代理模式之一静态代理 1 基本介绍 代理模式:为其他对象提供一种代理以控制对这个对象的访问 代理模式也叫委托模式,它是一项基本设计技巧。许多其他的模式,如状态模式、策略模式、访问者模式本质上都是在更加特殊的场合采用了代理模式。在日常开发应用种,代理模式能够提供非常好的访问控制。 代理可分为两种:一种是静态代理,由程序员创建或由特定工具自动生成源代码,再对其编译。在程序运行前,代理类的**.class**文件就已经存在了;另一种是动态代理:在程序运行时,运用反射机制动态创建而成。 静态代理通原创 2021-03-24 14:13:39 · 238 阅读 · 0 评论 -
23种设计模式6_建造者模式
23种设计模式6_建造者模式 1 基本介绍 建造者模式也叫生成器模式,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 建造者模式的UML类图: 如上图,建造者模式种有4种角色: Product产品类 通常是实现了模板方法模式,也就是有模板方法和基本方法。 Builder抽象建造者 规范产品的组件,一般是由子类实现。 ConcreteBuilder具体建造者 实现抽象类定义的所有方法,并且返回一个组建好的对象。 Director导演类 负责安排已有模块的顺序,然后告诉Builde原创 2021-03-23 14:03:45 · 133 阅读 · 0 评论 -
23种设计模式5_模板方法模式
1 基本介绍 定义:一个操作中的算法的框架,将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 UML类图: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YX8Dppp1-1616467576386)(C:\Users\高耀鹏\AppData\Roaming\Typora\typora-user-images\image-20210323095437688.png)] 模板方法模式包含两种模式: 抽象模板(AbstractClass)原创 2021-03-23 10:50:01 · 143 阅读 · 0 评论 -
23种设计模式4_原型模式
23种设计模式4_原型模式 1 基本介绍 原型模式(Prototype模式):用原型实例指定创建对象的种类,并且通过拷贝这些原型,创建新的对象。该模式是一种创建型设计模式,允许一个对象再创建另外一个可定制的对象,无需知道如何创建的细节。 原理:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝他们自己来实施创建,即对象.clone() 2 克隆羊问题 现在有一只羊,姓名:tom,年龄:1,颜色:白色。请编写程序创建和tom属性完全相同的100只羊。 3 传统方式实现 //原创 2021-03-22 17:51:59 · 131 阅读 · 0 评论 -
23种设计模式3_抽象工厂模式
1 基本介绍 抽象工厂模式:定义一个接口用于创建相关或有依赖关系的对象簇,而无需指明具体的类。 抽象工厂模式可以将简单工厂模式和工厂方法模式进行整合 简单工厂模式和工厂方法模式以及下面用到的一些类参考:23种设计模式2_工厂模式。 2 代码演示 interface SellType { public void sellFruit(); } // 直接售卖 public class Sell implements SellType { public void sellFruit() { Sy原创 2021-03-13 20:58:39 · 51 阅读 · 0 评论 -
23种设计模式2_工厂模式
1 基本介绍 假如现在有这样一个水果店的项目需求: ① 水果的种类很多(苹果、芒果、橙子、西瓜等); ② 完成水果店的在线订购功能,要求便于扩展,便于维护。 2 代码演示 2.1 简单实现 创建抽象类Fruit public abstract class Fruit { public abstract void make(); } 创建水果类:苹果、芒果、橙子、西瓜等 // 苹果 public class Apple extends Fruit { @Override public原创 2021-03-13 20:36:33 · 59 阅读 · 0 评论 -
23种设计模式1_单例模式
23种设计模式1_单例模式 1 基本介绍 单例模式:采取一定的方法保证在整个的软件系统中,对某个类***只能存在一个对象实例***,并且该类只提供一个取得其对象实例的方法。比如:SessionFactory 2 饿汉式 2.1 实现步骤 ① 构造器私有化 ② 类的内部创建对象 ③ 向外暴露一个静态的公共方法 2.2 代码演示 2.2.1 方式一 public class Singleton { // 1.构造器私有化 private Singleton() {}原创 2021-03-12 19:26:48 · 53 阅读 · 0 评论 -
设计模式六大原则之六:迪米特原则
1 基本介绍 ① 一个对象应该对其他对象保持最少的了解; ② 类与类之间的关系越密切,耦合度越大; ③ 迪米特原则(Demeter Principle)又称最少知道原则,即一个类对自己依赖的类知道的越少越好。也就是说,对于被依赖的类不管多么复杂,都尽量将逻辑封装在类的内部。对外除了提供的public方法,不对外泄露任何信息。 ④ 每个对象都会与别的对象存在耦合关系,耦合的方式有很多种:依赖、关联、组合聚合等。其中我们将出现在成员变量、方法参数、方法返回值中的类称为直接关系类,而出现在局部变量中的类称为非直接原创 2021-03-12 09:28:14 · 84 阅读 · 0 评论 -
设计模式六大原则之五:开闭原则
1 基本介绍 开闭原则(OCP:Open Closed Principle):一个软件实体如类,模块和函数应该对扩展开放,对修改关闭。用抽象构建架构,用实现扩展细节。当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。 2 案例演示 public class Exer { public static void main(String[] args) { Coach coach = new Coach(); coach.execP原创 2021-03-12 09:22:09 · 113 阅读 · 0 评论 -
设计模式六大原则之四:里氏替换原则
1 基本介绍 java中的继承大家都用过,子类可以继承父类的方法和属性,其实继承还有一层隐藏的含义:父类已经写好了的方法,就是定义了自己的规范,虽然没有要求规定子类必循遵循这些规范,但是如果子类对这些方法进行了修改,就会对整个继承体系造成破坏。另外子类继承父类,也降低了程序的可移植性,增加了耦合性,如果父类想要改变这些方法,就需要考虑到子类的功能是否会出现bug或者是存在bug的隐患。 里氏替换原则:所有引用基类的地方必须能透明地使用其子类的对象。在使用继承时,在子类中尽量不要重写父类的方法。继承实际上是让原创 2021-03-12 09:18:52 · 71 阅读 · 0 评论 -
设计模式六大原则之三:依赖倒转原则
1 基本介绍 依赖倒转原则(Dependence Inversion Principle): ① 高层模块不应该依赖底层模块,二者都应该依赖其抽象 ② 抽象不应该依赖细节,细节应该依赖抽象 ③ 依赖倒转(倒置)的中心思想是面向接口编程 ④ 依赖倒转原则是基于这样的设计理念:相对于细节的多变性,抽要的东西要稳定的多。以抽象为基础搭建的架构比以细节为基础的架构要稳定的多。在java中,抽象指的是接口或者抽象类,细节就是具体的实现类。 ⑤ 使用接口或者抽象类的目的是制定好规范,而不涉及任何具体原创 2021-03-11 22:43:21 · 152 阅读 · 4 评论 -
设计模式六大原则之二:接口隔离原则
1 基本介绍 接口隔离原则(Interface Segregation Principle):客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上。 2 案例演示 如上图,类B,类D都是接口I的实现,其中类A通过接口I依赖B,使用方法1,2,3但是B却还要实现方法4,5;类C通过接口I依赖D,使用方法1,4,5但是D却还要实现方法2,3。 public class Segregation1 { public static void main(String[] args)原创 2021-03-11 22:37:06 · 71 阅读 · 2 评论 -
设计模式六大原则之一:单一职责原则
1 基本介绍 单一职责原则(Single Responsibility Principle):对于类来说,一个类应该只负责一项职责。比如类A负责两个不同的职责:职责1,职责2。当职责1需求变更而改变A时,可能造成职责2执行错误,所以需要将类A的力度分解为A1,A2。 2 案例演示 2.1 案例一 public class SingleResponsibility1 { public static void main(String[] args) { Vehicle vehicle =原创 2021-03-11 22:29:51 · 81 阅读 · 0 评论