设计模式
设计模式
小帆敲代码
这个作者很懒,什么都没留下…
展开
-
设计模式GOF23之工厂模式01
简单工厂模式和工厂方法模式 工厂模式核心:分工 简单工厂模式不符合OCP(Open-Closed Princinple)原则,扩展时需要更改原代码 工厂方法模式增加了类复杂度代码复杂度等,所以一般使用简单工厂模式 普通代码 public interface Car {void run();} public class Aud...原创 2019-08-06 20:12:00 · 122 阅读 · 0 评论 -
设计模式之GOF23工厂模式02
抽象工厂模式 不能添加单个产品,产品族 public interface Seat {void anmo();}class GoodSeat implements Seat {@Overridepublic void anmo() {System.out.println("可以按摩");}}class LowSeat implements Seat...原创 2019-08-06 21:30:00 · 83 阅读 · 0 评论 -
设计模式之GOF23建造者模式
组件很多,装配顺序不定 本质: 1,分离了对象子组件的单独构造(Builder负责)和装配(Director负责),从而可以构造出复杂的对象,这个模式适用于某个对象的构建过程复杂的情况下使用 2,实现了构建和装配的解耦 /**建造者用来得到各个组件* @author 小帆敲代码**/public interface AirshipBuilde...原创 2019-08-09 12:19:00 · 128 阅读 · 0 评论 -
设计模式之GOF23原型模式01
原型模式prototype 原型模式: - 通过new产生一个对象需要非常繁琐的数据准备或者访问权限,则可以使用原型模式,比如如果new对象所需时间过长,可以通过克隆产生相同的副本 - Java中的克隆技术,就是以某个对象为原型,复制出新的对象,显然新的对象剧本原型对象的特点 - 克隆类似new但是并不相同,new出的对象都是默认值,克隆出来的对象...原创 2019-08-09 21:40:00 · 70 阅读 · 0 评论 -
设计模式之GOF23原型模式02
利用序列化和反序列化完成深复制 ByteArrayOutputStream bos=new ByteArrayOutputStream();ObjectOutputStream oos=new ObjectOutputStream(bos);oos.writeObject(s1);byte[] bytes=bos.toByteArray();ByteArrayI...原创 2019-08-09 22:32:00 · 88 阅读 · 0 评论 -
设计模式之GOF23适配器模式
结构型模式 核心作用:是从程序的结构上实现松耦合,从而可以扩大整体的 类结构,用来解决更大的问题 适配器模式adapter 实际生活中的例子:转换器 适配器的两种方式: 1,类适配器(继承) /**需要适配的对象* @author 小帆敲代码**/public class Adaptee {public void re...原创 2019-08-10 09:15:00 · 119 阅读 · 0 评论 -
设计模式之GOF23代理模式01
代理模式 核心作用: -通过代理,控制对对象的访问 -可以详细控制机制访问某个(某类)对象的方法,在调用这个方法前做前置处理,调用这个方法后做 后置处理(AOP的微观实现) 应用场景 -安全代理:屏蔽对真是角色的直接接触(经纪人) -远程代理:通过代理类处理远程方法 -延迟加载:先加载轻量级的...原创 2019-08-10 17:20:00 · 87 阅读 · 0 评论 -
设计模式之GOF23代理模式02
静态代理 模拟经纪人与明星开演唱会 public interface Star {/** * 面谈 */void confer();/** * 签合同 */void signContract();/** * 唱歌 */void sing();/** * 收尾款 */void coleectMoney();}&#...原创 2019-08-10 17:23:00 · 83 阅读 · 0 评论 -
设计模式之GOF23代理模式03
动态代理 public class StarHandler implements InvocationHandler{Star realStar;public StarHandler(Star realStar) {this.realStar = realStar;} @Overridepublic Object invoke(Object pro...原创 2019-08-10 17:27:00 · 84 阅读 · 0 评论 -
设计模式之GOF23桥接模式
桥接模式 当一个问题违反单一职责原则时,及控制该产品的有多个维度,为了扩展时减少类的膨胀个数,可以选用桥接模式 避免多重继承时 例如买电脑时 桥接模式 ...原创 2019-08-11 09:45:00 · 107 阅读 · 0 评论 -
设计模式之GOF23组合模式
组合模式Composite 使用组合模式的场景:把部分和整体的关系用树形结构表示,从而使客户端可以使用统一的方式处理对象和整体对象(文件和文件夹) 组合模式核心: -抽象构件(Component)角色:定义了叶子和容器的共同点 -叶子...原创 2019-08-11 12:22:00 · 107 阅读 · 0 评论 -
设计模式之GOF23装饰模式
装饰模式decorator 作用: -动态的为一个对象增加新功能 -装饰模式是一种用于代替继承的技术,无需通过增加子类就能扩展对象的新功能,适用对象的组合关系代替继承关系,更加灵活,同时避免类型体系的快速膨胀 角色: -Component抽象构件角色:真实对象和装饰对象具有相同的接口,这样,客户端对象就能够以与真实对象相同的方式与装饰对象...原创 2019-08-11 16:00:00 · 89 阅读 · 0 评论 -
设计模式之GOF23外观模式
外观模式 迪米特原则:一个软件实体应当尽可能少的与其他实体发生相互作用 外观模式核心:为子系统提供统一的入口,封装子系统的复杂性,便于客户端调用 相当于找了个代理帮你做了所有事而你只需要和代理打交道...原创 2019-08-14 13:00:00 · 100 阅读 · 0 评论 -
设计模式之GOF23享元模式
享元模式FlyWeight 场景:如果有很多个完全相同或者相似的对象,可以节省内存资源 核心: 享元模式以共享的方式高效地支持大量细粒对象的重用 享元对象做到共享的关键是区分了内部状态和外部状态: 内部状态:可以共享,不会随环境变化而变化(共有的部分) 外部状态:不可以共享,会随环境变化而改变(独特的...原创 2019-08-14 14:10:00 · 87 阅读 · 0 评论 -
设计模式之GOF23责任链模式
责任链模式chain of responsibility 将能够处理同一类请求的对象连成一条链,所提交的请求依次在链上传递,直到传递至有能力处理该请求的对象,不能则传给链上下一个 场景: -打牌时 -奖学金审批 -请假审批 核心:是在客户端中才成链,也可以通过配置文件或者存在数组中加载 开发中常见场景: -t...原创 2019-08-15 12:02:00 · 117 阅读 · 0 评论 -
设计模式之GOF23迭代器模式
迭代器模式Iterator /*** 自定义迭代器接口* @author 小帆敲代码**/public interface MyIterator {void first();//游标置于第一个void last();//游标置于最后一个boolean isfirst();boolean isLast();void next();//游标后移一...原创 2019-08-15 14:37:00 · 70 阅读 · 0 评论 -
设计模式之GOF23中介者模式
中介者模式Mediator 场景:公司中各个部门需要交互,通过中介总经理进行交互 核心: 如果一个系统中对象之间的联系成网状结构,对象之间多对多,将导致关系极其复杂,这些对象统称为“同事关系” 我们可以引入一个中介者对象,使各个同事对象只和自身与中介者打交道,中介再去其他部门交互 中介者模式的本质: 解耦多个同事对象之间的交互关...原创 2019-08-15 15:21:00 · 89 阅读 · 0 评论 -
设计者模式之GOF23命令模式
命令模式Command 将一个请求封装为一个对象,从而使我们可用不同的请求对客户参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。也称之为:动作Action模式,事务transaction模式 在命令发出,命令执行前后可以进行相关操作也具有更高的扩展性,包括多个执行者,多个命令的情况 结构: -Command抽象命令类 -Conc...原创 2019-08-16 11:08:00 · 83 阅读 · 0 评论 -
设计模式GOF23大纲
创建型模式: 单例模式,工厂模式,抽象工厂模式 结构型模式: 适配器模式,桥接模式,装饰模式,组合模式,外观模式,享元模式,代理模式 行为型模式: 模板方法模式,命令模式,迭代器模式,观察者模式,中介者模式,备忘录模式,解释器模式,状态模式,策略模式,职责链模式,访问者模式...原创 2019-08-05 18:23:00 · 65 阅读 · 0 评论 -
设计模式GOF23之单例模式
单例模式的五种方式 主要:懒汉式,饿汉式 其他:双重检测锁(Double Checking模式),静态内部类,枚举模式 选取时机 延时加载,占用内部资源大:静态内部类好于懒汉 不延时加载,占用内部资源小:枚举好于饿汉 /*** 单例模式 懒汉式* @author 小帆敲代码**/public class D...原创 2019-08-05 18:32:00 · 122 阅读 · 0 评论 -
设计模式之GOF23解释器模式
解释器模式Interpreter -是一种不常用的设计模式 -用于描述如何构成一个简单的语言解释器,主要用于使用面向对象语言开发的编译器和解释器设计 -当我们需要开发一种新的语言时,可以考虑使用解释器模式 -尽量不要使用解释器模式,后期维护会有很大麻烦,在项目中,可以使用Jruby,Groovy,java的js引擎来替代解释器的作用,弥补java语...原创 2019-08-16 11:20:00 · 79 阅读 · 0 评论 -
设计模式之GOF23访问者模式
访问者模式Visitor 模式动机:对于存储在一个集合中的对象,他们可能具有不同的类型(即使有一个公共的接口),对于该集合中的对象,可以接受一类称为访问者的对象来访问,不同访问者的访问方式也不同 定义:表示一个作用于某对象结构中的各元素的操作,它使我们可以在不改变元素的类的前提下定义作用与这些元素的新操作 开发中的场景(应用范围较窄): -XML文...原创 2019-08-16 11:26:00 · 136 阅读 · 0 评论 -
设计模式之GOF23策略
策略模式strategy 场景:对不同客户的不同报价策略 如果采用if else不易扩展,不符合开闭原则,可以采用策略模式 策略模式: 对应于解决某一个问题的算法族,允许其中一个算法去解决某一问题,同时可以方便的更改和扩展算法,可以由客户端决定调用那个算法 结构:抽象策略类,具体策略类(算法族),上下文类(客户端和算法类的分离),客户端类...原创 2019-08-16 13:18:00 · 81 阅读 · 0 评论 -
设计模式之GOF23模板模式
模板模式template method 场景:具有具体流程,但具体某一步的业务不同 到银行办理业务:排队取号,办理业务,给员工打分 请客吃饭:等待,点单,吃饭,结账 模板方法模式介绍:模板方法是编程常用的模式,它定义了一个操作中的算法骨架,将某些步骤延迟到子类中实现。这样,新的子类可以在不改变一个算法结构的前提下重新定义该算法的某些特定步骤。...原创 2019-08-16 19:11:00 · 80 阅读 · 0 评论 -
设计模式之GOF23状态模式
状态模式state 场景:当具有许多状态并且需要频繁改变时,用这种模式 -电梯的运行:维修,正常,自动关门,自动开门,向上运行,向下运行,消防状态 -红绿灯:红灯,黄灯,绿灯 -企业或政府系统:公文的审批状态 -网上购物时,订单的状态:下单,已付款,送货中,已收货 核心:用于解决系统中复杂对象的状态转换及不同状态下行为的封装问题...原创 2019-08-16 20:20:00 · 116 阅读 · 0 评论 -
设计模式之GOF23观察者模式
观察者模式Observer 广播机制 场景:多个观察者--被通知改变 CS的时候,人物移动坐标变化,更新每个人地图上的坐标 核心:当目标对象(Subject)的状态值改变时,需要及时告知所有观察者(Observer),使他们做出响应 开发中常见的场景: -聊天室程序中,服务器转发给所有客户端 -网络游戏(多人联机)中,...原创 2019-08-16 21:41:00 · 103 阅读 · 0 评论 -
设计模式之GOF23备忘录模式
备忘录模式Memento 场景: -Word文档编辑时,电脑死机或者断电,再次打开时,word提醒恢复之前的文档 -文件的撤回 核心: -就是保存某个对象内部状态的拷贝,这样以后就可以将该对象恢复到原先的状态 结构:-源发器类Originator(需要备忘的对象,内部可以创建备忘录,用于记录当前时刻它的内部状态,并可使用备忘录回...原创 2019-08-20 15:41:00 · 102 阅读 · 0 评论