
设计模式
文章平均质量分 89
echojson
雄鹰在鸡窝里长大,就会失去飞翔的本领,野狼在羊群里成长,也会爱上羊而丧失狼性。人生的奥妙就在于与人相处。生活的美好则在于送人玫瑰。和聪明的人在一起,你才会更加睿智。和优秀的人在一起,你才会出类拔萃。所以,你是谁并不重要,重要的是,你和谁在一起。
展开
-
工厂模式
工厂顾名思义就是创建产品,根据产品是具体产品还是具体工厂可分为简单工厂模式和工厂方法模式,根据工厂的抽象程度可分为工厂方法模式和抽象工厂模式。该模式用于封装和管理对象的创建,是一种创建型模式。本文从一个具体的例子逐步深入分析,来体会三种工厂模式的应用场景和利弊。1. 简单工厂模式该模式对对象创建管理方式最为简单,因为其仅仅简单的对不同类对象的创建进行了一层薄薄的封装。该模式通过向工厂传递类型来指定要创建的对象,其UML类图如下:下面我们使用手机生产来讲解该模式:Phone类:手机标准规范类(Abs原创 2021-04-09 14:54:37 · 206 阅读 · 0 评论 -
装饰者模式
装饰器模式装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。优点:装饰者模式比继承灵活性,在不改变原有对象的情况下给对象扩展功能,符合开闭原则。继承关系是静态的,在编译的时候就已经决定了行为,不便于控制增加行为的方式和时机。装饰者模式可以动态使用不同的装饰类排列组合,创造出多样的行为原创 2021-03-17 17:35:39 · 166 阅读 · 0 评论 -
抽象工厂模式详解 —— head first 设计模式
项目实例假设你有一家 pizza 店,你有很多种 pizza,要在系统中显示你所有 pizza 种类。实现这个功能并不难,使用普通方式实现:public class PizzaStore { Pizza orderPizza(String type) { Pizza pizza = null; if (type.equals("cheese")) { pizza = new CheesePizza(); } else if (type原创 2021-03-17 15:23:08 · 228 阅读 · 0 评论 -
代理模式
代理模式概述代理模式的定义:代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层。举个例子来说明:假如说我现在想买一辆二手车,虽然我可以自己去找车源,做质量检测等一系列的车辆过原创 2021-03-17 14:43:47 · 139 阅读 · 1 评论 -
深入理解 Java 动态代理机制
Java 有两种代理方式,一种是静态代理,另一种是动态代理。对于静态代理,其实就是通过依赖注入,对对象进行封装,不让外部知道实现的细节。很多 API 就是通过这种形式来封装的。代理模式结构图(图片来自《大话设计模式》)下面看下两者在概念上的解释:静态代理静态代理类:由程序员创建或者由第三方工具生成,再进行编译;在程序运行之前,代理类的.class文件已经存在了。静态代理类通常只代理一个类。静态代理事先知道要代理的是什么。动态代理动态代理类:在程序运行时,通过反射机制动态原创 2021-03-17 14:41:03 · 167 阅读 · 0 评论 -
中介者模式
中介者模式概述中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。在现实生活中,常常会出现好多对象之间存在复杂的交互关系,这种交互关系常常是“网状结构”,它要求每个对象都必须知道它需要交互的对象。例如,每个人必须记住他(她)所有朋友的电话;而且,朋友中如果有人的电话修改了,他(她)必须告诉其他所有的朋友修改,这叫作“牵一发而动全身”,非常复杂。如果把这种“原创 2021-03-15 17:55:05 · 115 阅读 · 0 评论 -
桥接模式
设计模式文章桥接模式中介者模式代理模式抽象工厂模式详解 —— head first 设计模式装饰者模式适配器模式策略模式观察者模式建造者模式 (Builder)概述在现实生活中,某些类具有两个或多个维度的变化,如图形既可按形状分,又可按颜色分。如何设计类似于 Photoshop 这样的软件,能画不同形状和不同颜色的图形呢?如果用继承方式,m 种形状和 n 种颜色的图形就有 m×n 种,不但对应的子类很多,而且扩展困难。当然,这样的例子还有很多,如不同颜色和字体的文字、不同品牌和功原创 2021-03-11 16:28:55 · 129 阅读 · 0 评论 -
设计模式六大原则详解
文章目录设计模式六大原则,具体如下:`单一职责原则的定义(类、方法、接口)`单一职责原则的优点单一职责原则的实现方法示例`开闭原则` (扩展开放,修改关闭)实例`里氏替换原则` (基类和子类之间的关系)里氏替换原则的作用里氏替换原则的实现方法(继承)`依赖倒置` (依赖抽象接口,而不是具体对象)依赖、倒置原则的作用依赖倒置原则的实现方法`接口隔离原则`(接口按照功能细分)接口隔离原则的优点接口隔离原则的实现方法`迪米特法则` (类与类之间的关系)迪米特法则的优点迪米特法则的实现方法设计模式六大原则,具体如原创 2021-03-11 16:06:40 · 479 阅读 · 0 评论 -
策略模式和工厂模式搭配使用
策略模式和工厂模式的搭配使用可以很好地消除代码if-else的多层嵌套需求针对店下商铺,有这样一个需求,对用户客户分为了普通客户、vip客户、超级vip用户、专属vip用户4个等级,每当用户购买商品时,针对不同的用户等级和消费金额采取不同的打折优惠策略。在平常的开发当中,必然会出现多层的if-else嵌套判断,先判断用户的等级再判断用户购买商品的消费金额。弊端以上的情况出现了多层的if-else嵌套,除此之外,以后如果需求再有变动,需要再增加一个用户等级,那么又会再次添加if-else的嵌套判断.原创 2021-03-05 10:07:31 · 151 阅读 · 1 评论 -
策略模式和工厂模式的区别
文章目录策略模式和工厂模式的区别相似点差异用途不一样关注点不一样解决不同的问题举例说明策略模式和工厂模式的区别相似点在模式结构上,两者很相似;差异用途不一样工厂是创建型模式,它的作用就是创建对象;策略是行为型模式,它的作用是让一个对象在许多行为中选择一种行为;关注点不一样一个关注对象创建一个关注行为的封装解决不同的问题工厂模式是创建型的设计模式,它接受指令,创建出符合要求的实例;它主要解决的是资源的统一分发,将对象的创建完全独立出来,让对象的创建和具体的使用客户无关。主要应用原创 2021-03-05 09:54:41 · 2259 阅读 · 2 评论