设计模式
文章平均质量分 78
孤鸿踏雪
一介书生,三尺微命。
展开
-
设计模式阶段总结
设计模式阶段总结原创 2022-07-19 15:16:11 · 491 阅读 · 2 评论 -
设计模式之代理模式再学习
代理模式代理模式是一种结构型设计模式, 让你能够提供对象的替代品或其占位符。 代理控制着对于原对象的访问, 并允许在将请求提交给对象前后进行一些处理。代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。1 结构1.服务接口(Service Interface) 声明了服务接口。 代理必须遵循该接口才能伪装成服务对象。2.服务(Service) 类提供了一些实用的业务逻辑。3.代理(Proxy) 类包含一个指向服务对象.原创 2021-07-01 16:31:50 · 94 阅读 · 0 评论 -
设计模式之享元模式
目录享元模式1 享元与不可变性2 享元工厂3 结构4 例子5 应用场景6 实现方式7 享元模式优缺点享元模式享元模式是一种结构型设计模式, 它摒弃了在每个对象中保存所有数据的方式, 通过共享多个对象所共有的相同状态, 让你能在有限的内存容量中载入更多对象。通过共享的方式高效的支持大量细粒度的对象。1 享元与不可变性由于享元对象可在不同的情景中使用, 你必须确保其状态不能被修改。 享元类的状态只能由构造函数的参数进行一次性初始化, 它不能对其...原创 2021-06-23 16:20:14 · 124 阅读 · 1 评论 -
设计模式之组合模式
组合模式是一种结构型设计模式, 你可以使用它将对象组合成树状结构, 并且能像使用独立对象一样使用它们。1 结构1.组件(Component) 接口描述了树中简单项目和复杂项目所共有的操作。2.叶节点(Leaf) 是树的基本结构, 它不包含子项目。一般情况下, 叶节点最终会完成大部分的实际工作, 因为它们无法将工作指派给其他部分。3.容器(Container)——又名 “组合 (Composite)”——是包含叶节点或其他容器等子项目的单位。 容器不知道其子项目所属的具体类, 它只通过.原创 2021-06-23 09:36:29 · 105 阅读 · 1 评论 -
桥接模式-基于接口开发
结构性设计模式,可将一个大类或一系列紧密相关的类拆分抽象和实现两个独立的层次结构,从而能能在开发时分别使用。1 桥接模式结构1.抽象部分(Abstraction) 提供高层控制逻辑, 依赖于完成底层实际工作的实现对象。2.实现部分(Implementation) 为所有具体实现声明通用接口。 抽象部分仅能通过在这里声明的方法与实现对象交互。抽象部分可以列出和实现部分一样的方法, 但是抽象部分通常声明一些复杂行为, 这些行为依赖于多种由实现部分声明的原语操作。3.具体实现(Concre.原创 2021-06-22 11:26:28 · 163 阅读 · 0 评论 -
设计模式学习网站-外网-支持中文
根据网友推荐看到https://refactoringguru.cn/原创 2021-06-18 10:43:33 · 416 阅读 · 0 评论 -
建造者模式
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。结构图如下:Builder:是为创建Product对象各个部件的抽象接口;Product:具体产品角色;Director:指挥者,构建一个使用Builder接口的对象;public class Product { List<String> parts = new Arra...原创 2020-02-12 10:31:45 · 123 阅读 · 0 评论 -
门面模式/外观模式
为子系统中一组接口提供一个一致的界面,此模式定义一个高级接口,这个接口使得这一子系统更加容易使用。案例1public class SubSystem1 { public void methodOne(){ System.out.println("子系统方法一"); }}public class SubSystem2 { public vo...原创 2020-02-11 16:25:38 · 111 阅读 · 0 评论 -
模板方法模式
定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重新定义算法的某些特定步骤。结构图如下:AbstractClass 是抽象类,即抽象模板,定义并实现了一个模板方法,这个模板方法一般是一个具体方法,它给出了一个顶级逻辑架构,而逻辑的组成步骤在相应的抽象操作中。ConcreteClass 实现父类所定义的一个或多个抽象...原创 2020-02-10 17:35:11 · 73 阅读 · 0 评论 -
深拷贝和浅拷贝
设计模式中有一个原型模式,使用的接口Cloneable ,给出个简单例子说明深拷贝和浅拷贝的区别。1. 浅拷贝public class Thing implements Cloneable { //定义一个私有变量 private ArrayList<String> arrayList = new ArrayList<>(); @Override pu...原创 2018-09-17 10:04:33 · 211 阅读 · 0 评论 -
工厂方法模式
1.案例1-计算器实现接上文 简单方法模式例子:https://blog.csdn.net/single_wolf_wolf/article/details/78702232工厂方法模式结果图如下:新增 公共工厂接口和每种操作的工厂类//工厂方式模式-简单工厂进阶public interface IFactory { public Operation crea...原创 2020-02-09 17:27:46 · 138 阅读 · 0 评论 -
装饰模式
动态的给一个对象添加一些额外的职责,就增加功能呢来说,装饰模式比生成子类更加灵活。装饰模式结构图Component 是定义一个对象接口,可以给这些对象动态地添加职责,ConcreteComponent是定义了一个具体对象,也可以给这个对象添加职责,Decorator装饰抽象类,继承了Component从外类扩展Component类的功能,对于Component来说,是无需知道De...原创 2020-02-08 17:20:56 · 94 阅读 · 0 评论 -
软件开发设计模式核心原则
1.单一职责原则(SRP) 就一个类而言,应该仅有一个引起它变化的原因。 如果一个类承担过多的职责,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他类的能力。 如果你能想到多于一个的动机去改变一个类,那么这个类就是具有多个职责。2.开放封闭原则(OCP) 软件实体(类,模块,函数等等)应该可以扩展,但是不...原创 2020-02-08 15:15:29 · 261 阅读 · 0 评论 -
责任链模式
责任链模式定义如下:使得多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连城一条链子,并且沿着这个条链子传递该请求,知道有对象处理它为止。例子: 用户注册时,普通用户和vip用户注册采用不同的方式,因此需要不同处理者进行处理。此模式重点是“链”通用类图如下:Handler:多个处理者的抽象类 抽象处理者CommonRegisterv、VI...原创 2018-09-30 16:06:36 · 149 阅读 · 0 评论 -
工厂方法模式
工厂方法模式:Define an interface for creating an object,but let subclasses decide which class to instantiate.Factory Method lets a class defer instantiation to subclasses.(定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使...原创 2018-09-10 19:12:38 · 110 阅读 · 0 评论 -
单例模式--饿汉式单例/懒汉式单例
单例模式(Singleton Pattern)是一个比较简单的模式,其定义如下:Ensure a class has only one instance, and provide a global point of access to it.(确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.)方法:使用private的构造函数确保了在一个应用中只产生一个实例,并且是自行实...原创 2018-09-10 17:05:18 · 135 阅读 · 0 评论 -
代理模式
最近在看《设计模式之禅》复盘一下代理模式。代理模式(Proxy Pattern):为其他对象提供一种代理以控制对这个对象的访问。一 简单例子一个普通的代理模式的例子:假如小明是一个正常的上班族,突然有一点他不想上班了,但是还是想领工资(我也想),这个时候他找了一个人每天帮他刷卡上班,工作,然后刷卡下班,然后工资还是小明领。。。在这种情景下,我们给出一个普通代理模式的例子:...原创 2018-09-12 19:26:34 · 130 阅读 · 0 评论 -
策略模式
策略模式:它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。 策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理。策略模式通常把一个系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类。用一句话来说,就是:“准备一组算法,并将每一个算法封装起来,使得它们可以互换”。下面就以一个示意性原创 2017-12-05 20:30:10 · 158 阅读 · 0 评论 -
简单工厂模式
最近在看《大话设计模式》对于每章节的感想和思考想保留下来,所以特此开始写一写关于新学习的设计模式的东西,作为以后的参考。 简单工厂模式就是说1. 每个功能的实现,尽量分开,方便后续的继承和需求的增加,尽量松耦合;2. 在多个功能实现的基础上,增加一个“工厂”作为一个接口,也就是功能的入口。例子如下:实现计算器,首选是一个抽象类-操作,作为操作符的父类pack原创 2017-12-03 16:31:26 · 157 阅读 · 0 评论