![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java设计模式
文章平均质量分 83
代码演示
Super_Song_
farmer很忙
展开
-
Java设计模式—观察者模式
观察者模式业务需求气象站需要测量温度、湿度、气压,发布到平台上需要开放型API,便于第三方可以接入获取气象数据API可以提供气象参数的接口,气象站更新数据时可以实时通知第三方传统方案-创建天气类,通过get方法让第三方获取信息气象站通过change方法更新数据,第三方法下次获取数据时就会更新,这是第三方主动获取数据第三方也可以被动接收数据;需要推送时,引入第三方的对象,调用他们的update方法进行推送更新传统方式代码气象接收方// 显示天气情况,可以理解为气象站自己的网站p原创 2021-08-03 11:12:09 · 122 阅读 · 0 评论 -
Java设计模式—迭代器模式
迭代器模式业务需求页面展示学校院系组成,一个学校有多少个学院,一个学院有多少个系传统解决方式分析将学院看做学校的子类,系看做学院的子类;相当于根据组织大小进行分层次但是我们的要求是,一个学校有多少学院,一个学院有多少系;传统方案不适合遍历操作选择迭代器模式迭代器模式基本介绍常用的设计模式,属于行为型模式当集合元素用不同元素实现的,包括数据、Java集合类、其他方式;客户端需要遍历这些集合元素,需要使用多种遍历方式,还会暴露内部结构;针对这种问题,可以考虑使用迭代器模式解决迭代器原创 2021-08-02 16:52:57 · 195 阅读 · 0 评论 -
Java设计模式之访问者模式(Visitor)
访问者模式(Visitor)业务需求测评系统,将人分为男人女人,对歌手进行测评,当看完某个表演后,得到他们对当前歌手的评价,如,成功,失败,等传统解决方案传统方式问题分析系统较小时可以用,如果系统功能越来越多时,对代码改动较大,违反OCP原则,不利于维护扩展性不好,增加新的人员类型,管理方法等,都不好做适合使用访问者模式基本介绍封装一些作用域某种数据结构的各种元素的操作,可以在不改变数据结构的前提下定义作用域这些元素的新的操作主要将数据结构与数据操作分离,解决数据结构和操作耦翻译 2021-07-30 12:58:09 · 373 阅读 · 0 评论 -
Java设计模式—命令模式(Command Pattern)
命令模式业务需求智能生活项目需求有一套只能家电,有照明灯,风扇,冰箱,洗衣机,我们只需要手机安装app即可控制这些家电这些智能家电来自不同的厂家,不想每个家电都安装app分别控制,希望只安装一个app就可以控制全部智能家电要实现一个app控制所有只能家电的需要,需要每个只能家电提供一个统一的接口调用,适合使用命令模式命令模式可以将动作的请求者,从动作的执行者对象汇总解耦出来本例中,动作请求者是手机app,都做执行者是每个厂商的一个家电产品基本介绍命令模式,在设计软件中,我们经常需要向原创 2021-07-29 16:59:57 · 181 阅读 · 0 评论 -
Java设计模式—模板模式(Template)
模板模式业务需求编写豆浆制作程序选材-添加配料-浸泡-豆浆机打碎选材、浸泡、打碎这几步对于制作不同豆浆都是一样的比较简单,这里不再使用传统方法,直接上设计模式模板模式基本介绍模板模式,在一个抽象类公开定义了执行他的方法的模板;他的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行简单说,模板模式定义一个操作中的算法骨架,将一些步骤延迟到子类中,使子类可以不改变一个算法结构,就可以重新定义该算法的某些特定步骤模板模式属于行为型模式原理类图原理类图说明Abstrac原创 2021-07-29 13:50:59 · 992 阅读 · 0 评论 -
Java设计模式—代理模式(Proxy)
代理模式代理模式基本介绍为对象提供替身,控制对这个对象的访问,通过代理对象访问这个对象;好处是,可以在目标对象实现的基础上,增强额外的功能操作,扩展目标的功能被代理的对象可以是远程对象,创建开销大的对象,或需要安全控制的对象代理模式的形式主要三种,静态代理,动态代理(JDK代理、接口代理),cglib代理(可以在内存中动态创建对象,且不需要接口),cglib代理属于动态代理范畴静态代理静态代理基本介绍静态代理使用时,需要定义接口或者父类,代理对象与被代理对象实现相同接口或继承相同父类原创 2021-07-28 17:28:59 · 128 阅读 · 0 评论 -
Java设计模式—享元模式(Flyweight Pattern)
享元模式业务需求小型外包项目,产品网站,不同客户要求不同有些客户要求以新闻形式发布;有些客户要求以博客形式发布;有些客户要求以微信公众号形式发布;传统解决思路复制粘贴,根据不同用户的需求,各自修改每个网站各租用一个空间传统解决思路问题分析交付的网站结构相似度很高,且访问量都不高;分别使用不同的虚拟空间,比较浪费服务器资源解决思路:整合到一个网站,共享其中相关代码和数据,减少服务器资源浪费对于代码来说,每个项目就是一个实例,维护和扩展更容易—享元模式基本介绍享元模式也叫蝇原创 2021-07-28 14:09:14 · 212 阅读 · 0 评论 -
Java设计模式—外观模式(Facade)
1原创 2021-07-27 17:21:52 · 790 阅读 · 0 评论 -
Java设计模式—组合模式
组合模式业务需求学校展示院系结构,一个学校有多个学院,一个学院有多个系;传统思路,系继承学院,学院继承学校;问题分析将学院看做是学校的子类,系是学院的子类,这样实际上是站在组织大小来进行分层次的实际我们要求是,一个学校有多个学院,一个学院有多个系;传统的方案不能很好实现管理操作,比如对学院、系的添加、删除、遍历等解决方案:把学校、院、系看做组织结构,他们之间没有继承关系,而是一个树形结构,可以更好实现管理操作基本介绍组合模式,又叫部分整体模式,它创建了对象组的树形结构,将对象组合原创 2021-07-26 12:47:28 · 217 阅读 · 0 评论 -
Java设计模式—装饰者模式(Decorator)
装饰者模式业务需求:星巴克咖啡项目:单品咖啡,可以选择添加调料咖啡种类:意大利、美式、无因、shortBlack调料:牛奶、豆浆、巧克力要求,扩展新的品类的咖啡,具有良好扩展性,改动方便,维护方便用面向对象的思想计算不同咖啡的费用,客户可以单点咖啡,也可以咖啡+调料方案一分析:Drink抽象类表示饮料,des是咖啡描述(名字),cost是计算费用(抽象方法)咖啡+调料的组合很多,产生很多的类;每增加一个咖啡或调料,类的数量就会倍增,出现类爆炸方案二分析:方案二可以控制类的原创 2021-07-23 16:55:19 · 296 阅读 · 0 评论 -
Java设计模式—桥接模式(Bridge)
桥接模式业务需求不同类型的手机,有不同的品牌传统的方式,每一个类型的手机,有对应的不同的品牌传统解决方案问题分析扩展性问题,类爆炸,如果再增加手机样式,还要增加各个品牌的手机;如果新增一个品牌,也要在各个样式中添加该品牌违反单一职责原则,增加了代码维护成本解决方案,桥接模式基本介绍将实现与抽象放在两个不同的类层次中,是两个层次可以独立改变是一种结构型设计模式桥接模式基于类的最小设计原则,通过使用封装、聚合、继承的行为让不同的类承担不同的职责;主要优点是把抽象与实现分离开原创 2021-07-13 14:03:23 · 660 阅读 · 0 评论 -
Java设计模式—适配器模式(Adapter Pattern)
123原创 2021-07-09 13:42:50 · 253 阅读 · 3 评论 -
Java设计模式—建造者模式(Builder Pattern)
建造者模式盖房项目需求建房子,包括打桩、砌墙、封顶房子有多种类,普通房、高楼、别墅,虽然过程一样,但是要求房子不能相同传统解决思路代码实现房子抽象类public abstract class AbstractHouse { // 打地基 public abstract void buildBasic(); // 砌墙 public abstract void buildWalls(); // 封顶 public abstract void原创 2021-07-08 16:12:08 · 126 阅读 · 0 评论 -
Java设计模式—原型模式(Prototype)
原型模式需求:克隆羊传统解决思路初始羊@Data@AllArgsConstructor@NoArgsConstructorpublic class Sheep { private String name; private int age; private String color;}克隆public class Client { public static void main(String[] args) { // 传统解决方法原创 2021-07-07 17:37:37 · 741 阅读 · 1 评论 -
Java设计模式—工厂模式(Factory)
简单工厂模式业务需求:披萨项目,便于扩展,便于维护披萨种类很多披萨制作披萨店订购功能类图普通代码实现pizza抽象类// pizza抽象类public abstract class Pizza { // pizza名字 protected String name; // 准备材料,不同pizza不一样 public abstract void prepare(); public void bake(){ System.out原创 2021-07-07 10:31:43 · 505 阅读 · 0 评论 -
Java设计模式—七大设计原则
1. 设计模式的目的代码重用性:相同代码,无需多次编写可读性:编程规范,易于阅读理解可扩展性:易于扩展维护,新增功能可靠性:新增功能对原有功能没有影响高内聚、低耦合2. 设计模式的原则设计模式的原则,其实就是程序员在编程时,应当遵守的原则,也是各种设计模式的基础,即程序为什么这样设计单一职责原则接口隔离原则依赖倒置原则里式替换原则开闭原则迪米特法则合成复用原则2.1 单一职责原则原则注意事项和细节降低类的复杂度,一个类只负责一项职责提高类的可读性,可维护性降低原创 2021-07-06 14:59:40 · 311 阅读 · 0 评论 -
Java设计模式—策略模式(Strategy)
鸭子问题要求:编写鸭子项目,展示各种鸭子(野鸭、北京鸭、玩具鸭)的各种行为信息(飞行、叫声)传统解决思路写鸭子抽象类,定义各种行为信息的方法,子类为各种鸭子,与父类行为相同则直接继承,不同则重写行为方法;鸭子抽象类public abstract class Duck { public Duck() {} // 显示鸭子信息 public abstract void display(); public void quack() { System原创 2021-06-30 23:58:42 · 328 阅读 · 3 评论 -
Java设计模式——单例模式(Singleton)
1. 饿汉式(静态变量)public class SingletonDemo1 { private static final SingletonDemo1 INSTANCE = new SingletonDemo1(); private SingletonDemo1() {} public static SingletonDemo1 getInstance() { return INSTANCE; } public static void m原创 2021-06-29 18:34:27 · 180 阅读 · 0 评论