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