
Java设计 模式
wjxbless
如果觉得简单,那就多思考
展开
-
设计模式(1)--设计原则
学习目标:* 掌握GOF核心设计模式* 掌握重构技法改善设计* 掌握面向对象设计原则* 理解松耦合设计思想设计模式:设计模式是一套被反复利用、多数人知晓的、经过分类编目的、代码设计经验的总结,使用设计模式是为了可重用代码、让代码更容易被人理解、更容易扩展、保证代码可靠性。设计原则:依赖倒置原则(DIP):* 高层模块(稳定)不应该依赖于底层模块(变化),二者都应该依赖于...原创 2019-05-15 12:44:37 · 501 阅读 · 0 评论 -
设计模式(12)--责任链模式
责任链模式原理:购买请求一个决策项目决策因素:价格,决策级别:组长,部长,副总,总裁考虑扩展性:根据请求需要的东西根据请求的总额可能审核时还要删减如果使用switch语句,会增加耦合性,所以将原来的switch处理逻辑体现在链上,谁能处理就留下处理责任链模式:如果由多个对象都有机会处理请求,责任链可以使请求的发送者和处理者解耦,请求...原创 2019-06-03 08:28:29 · 172 阅读 · 0 评论 -
设计模式(11)--解释器模式
计算模型按正常算数方式书写,解释器处理语法逻辑计算模型里有两类符号:数据和计算符(语法规则)用逆波兰算法分析算式语法用解释器模式处理数组,使用了什么数据处理和什么数理逻辑解释器模式:定义一个语法,定义一个解释器,该解释器处理该语法句子,将某些复杂的问题表达成某种语法规则,然后构建解释器来处理这类句子代码解析:package Jishiqimoshi;i...原创 2019-05-18 19:29:51 · 175 阅读 · 0 评论 -
设计模式(10)--蝇量模式
蝇量模式(轻量级模式)也叫享元模式(共用一个方法)景观设计软件项目遇到的问题:设置一个公园或者小区,会有树的大小,外观等等虽然对象不复杂,但是如果量大就会消耗很多内存,比如10000000棵树代码分析:package yingliangmoshi.old;/*** Created with IntelliJ IDEA.* Description:*...原创 2019-05-15 12:43:00 · 376 阅读 · 0 评论 -
设计模式(9)--观察者模式
Internet气象站项目:提供温度、气压和温度的接口测量数据更新时需实时的通知第三方需要设计开放性API,便于其他第三方公司也能接入气象站获取数据传统的设计方案:package guanchazhe;/*** Created with IntelliJ IDEA.* Description:* User: wjx* Date: 2019-04-...原创 2019-05-15 12:43:11 · 194 阅读 · 0 评论 -
设计模式(8)--访问者模式
最近先把简单的模式讲解一下,之前的模式比较难的例子找到好的例子替代之后再放上来,这个模式是23种设计模式最后一个,可能不太常用,所以是最后一个,因为比较好理解,所以先放上来访问者模式原理:雇员管理系统遇到的问题:新操作:年底根据雇员的等级或者休假天数给与补偿代码讲解:package fangwenzhemoshi;/*** Created with IntelliJ I...原创 2019-05-15 12:43:22 · 211 阅读 · 0 评论 -
设计模式(6)--外观模式
外观模式原理一个家庭影院的项目:在家庭影院中引入第二个遥控器用来调用各个功能放在一个接口上外观模式提供统一接口,来访问子系统中一群功能相关的接口,外观模式定义了一个高层接口,让子系统更容易使用。外观模式就是使用一个函数调用系统中的很多函数代码讲解:package waiguan;/*** Created with IntelliJ IDEA.* Descrip...原创 2019-05-15 12:43:48 · 225 阅读 · 0 评论 -
设计模式(7)--单例模式
单例模式的意义:用到的类的对象只能有一个(线程池,缓存,打印机等硬件设备)。如果多个实例会有造成冲突、结果不一致等问题可以用静态变量来指代这个对象来实现协商一个全局变量实现单例模式单例模式的意义:确保一个类最多只有一个实例,并提供一个全局访问点。经典单例模式类图结构:构造函数是私有的保证在外面无法调用构造函数,在里面有一个static getInstance()方法...原创 2019-05-15 12:42:47 · 261 阅读 · 0 评论 -
设计模式(5)--适配器模式
火鸡冒充鸭子:假设鸭子是某一个公司做的,但是另一个公司做了一个火鸡,但是如果火鸡想要做鸭子下,所以需要将火鸡和鸭子中间引入一个适配器,通过这个适配器之后,使得外界看来是一个鸭子,所以火鸡继承的是一个鸭子,但是调用的内容是个火鸡的内容。首先声明鸭子和火鸡的接口package shipeiqi;public interface Duck { public void gaga();...原创 2019-05-15 12:43:59 · 366 阅读 · 0 评论 -
设计模式(4)--工厂模式
通过Pizza项目引出简单工厂模式工厂方法模式抽象工厂模式关键点披萨项目:要方便披萨 品种的扩展、要便于维护、要能运行时扩展披萨族设计:定义一个Pizza的抽象类,定义四种方法prepare()抽象方法因为每个都不一样,切披萨都会一样。按照这种设计方式,会更改类的内容所以就会为被了对扩展的开发,遇到问题分成变化的部分和不变化的部分披萨工厂设...原创 2019-05-15 12:44:28 · 468 阅读 · 0 评论 -
设计模式(3)--观察者模式
概要:观察者模式原理观察者模式实例Java内置观察者Internet气象站项目:提供温度、气压和温度的接口测量数据更新时需实时的通知第三方需要设计开放性API,便于其他第三方公司也能接入气象站获取数据一个通常的设计方案:package guanchazhe;/*** Created with IntelliJ IDEA.* Description:...原创 2019-05-15 12:44:08 · 491 阅读 · 0 评论 -
设计模式(2)--策略模式
引入:模拟鸭子项目:从面向对象的角度设计这个项目,共同有一个gaga()叫,一个swim()方法,但是有一个display()方法不相同,所以前两个相同就在 父类中实现,剩下一个在父类中是抽象方法在子类中实现。但是随着使用会添加新的需求,这时候扩展性如何体现,如果放到父类中同时实现具体实现,这时候就直接代码复用就可以提高使用效率,但是有些子类是不会实现那种功能的,所以可以使用在子...原创 2019-05-15 12:44:18 · 555 阅读 · 0 评论