设计模式
LUK流
大数据/java web
展开
-
设计模式(二十六):状态模式
1. 定义例如:线程可运行状态,正在运行状态,阻塞状态,等待状态和终止状态。他们之间可以互相转换。2. 视频之间的状态切换视频状态类,可以通过context在不同的状态之间切换VideoContext 表示上下文。主要的作用就是用于不同状态之间切换,如stopState可以点换paly方式实现将videoState = PLAY_STATE ;public class VideoCo...原创 2019-11-02 19:13:06 · 132 阅读 · 0 评论 -
设计模式(二十五):访问者模式
1. 定义访问者模式可以将元素和对元素的操作分离,如果有新的操作,可以及时增加新的功能,不需要修改原来的元素。一旦原有的元素发生变化,后面所有的相关的操作都需要改变。...原创 2019-11-02 14:07:54 · 85 阅读 · 0 评论 -
设计模式(二十四):责任链模式
1. 定义优点:2. 负责某一件事成链式存储课程检查课程是否可以通过,如果有下一个检查者,当前approver审核完后交给下一个approver检查课程中是否含有视频检查视频中是否含有手记测试...原创 2019-11-01 20:44:54 · 80 阅读 · 0 评论 -
设计模式(二十三):中介模式
1. 定义例如聊天室,如果没有聊天室这个中介,所有消息的传输都是一对一,有了聊天室才可以实现广播。2. 聊天室用户,可以在聊天室发消息消息类聊天室测试:...原创 2019-10-31 22:08:18 · 100 阅读 · 0 评论 -
设计模式(二十二):命令模式
1. 定义将其请求的调用者和请求的执行者解耦。2. 命令和执行者解耦先构建一个课程视频:打开和关闭视频命令类命令的管理类测试原创 2019-10-31 20:15:42 · 68 阅读 · 0 评论 -
设计模式(二十一):备忘录模式
1. 定义例如:游戏的存档原创 2019-10-31 19:56:58 · 106 阅读 · 0 评论 -
设计模式(二十):观察者模式
1. 定义例如:你关注了某个商品,商品降价就会自动提醒你。2. 被观察者变化通知观察者一个课程类作为被观察者,继承了jdk的ObservableObservable提供了一系列对观察者的操作。编写一个question:一旦有人提问,老师就会收到通知老师作为观察者实现了Observer,并可以在被观察者发生变化的时候做出update测试...原创 2019-10-31 13:30:44 · 96 阅读 · 0 评论 -
设计模式(十九):解释器模式
1. 定义例如:正则表达式就是定义了一种规则去解释字符串的含义。解释器在实际生产过程中使用的很少2. 运算符解释器的实现定义一个解释器接口数字解释器加法解释器乘法解释器语法解释器public class ExpressionParser { private static Stack<Interpret> stack = new Stack<&...原创 2019-10-30 20:36:13 · 95 阅读 · 0 评论 -
设计模式(十八):策略模式
1.定义日常使用的if…else… 就是场景的不同策略。原创 2019-10-30 19:48:12 · 94 阅读 · 0 评论 -
设计模式(十七):迭代器模式
1. 定义比如集合:迭代器将存储数据和遍历数据隔离开来,但是每新增加一个集合就需要新增一个迭代器类型。日常使用时很少会自定义给一个迭代器,都是复用jdk的迭代器。2. 管理课程课程public class Course { private String name; public Course(String name) { this.name = nam...原创 2019-10-29 20:50:37 · 94 阅读 · 0 评论 -
设计模式(十六):模板模式
1. 定义优点缺点模板模式和策略模式的区别:模板方法模式的主要思想:定义一个算法流程,将一些特定步骤的具体实现、延迟到子类。使得可以在不改变算法流程的情况下,通过不同的子类、来实现“定制”流程中的特定的步骤。(代码复用)策略模式的主要思想:使不同的算法可以被相互替换,而不影响客户端的使用。(if else这种不同情况下的不同策略)2....原创 2019-10-29 20:25:05 · 93 阅读 · 0 评论 -
由浅clone遇到的问题,剖析理解clone的原理
昨天偶然遇到有人问到关系深克隆和浅克隆的问题,于是我仿写了一个例子,但是我发现打印出来的效果不尽人意:自定义的teacher,重写了clone方法public class Teacher implements Cloneable { private String name; private String course; public Teacher(String na...原创 2019-10-28 10:36:01 · 238 阅读 · 0 评论 -
设计模式(十五):代理模式
1.定义优点缺点原创 2019-10-23 22:26:31 · 103 阅读 · 0 评论 -
设计模式(十四):桥接模式
1. 定义优点缺点适配器模式和桥接模式的区别适配器模式:通过改变接口,目的是让他们相容。桥接模式:目的是将抽象和实现分离开来。两者使用的接口可以不同,目的是分离。2. 抽象部门和实现部分分离2.1 实现部分Account开户,是实现部分具体实现–活期账号具体实现–分期账号2.2 抽象部分银行开什么银行的账户是抽象部分ABC银行ICBC银行2.3 测试...原创 2019-10-22 21:25:57 · 99 阅读 · 0 评论 -
设计模式(十三):组合模式
1. 定义优点缺点2. 对象具有层次结构,客户端看不见层次关系一个目录抽象类目录:此时产生了子目录items,存在递归关系。/** * 课程目录 */public class CourseCatalog extends CatalogComponent { private List<CatalogComponent> items = new Array...原创 2019-10-22 20:36:05 · 77 阅读 · 0 评论 -
设计模式(十二):享元模式
1. 定义优点:缺点:外部对象:随着变化而变化的对象(stringbuilder)内部对象:不随着变化而变化(string)原创 2019-10-22 13:34:27 · 116 阅读 · 0 评论 -
设计模式(十一):适配器模式
1. 定义优点缺点原创 2019-10-21 22:29:20 · 74 阅读 · 0 评论 -
设计模式(十):装饰模式
1. 定义优点:对象的扩展和对象本身区别开来,更加灵活缺点2. 继承实现对类的增强假设有一个煎饼,8块钱加个鸡蛋,加一块加根肠,2块此时有一个问题:如果加1到100根肠的可能性都有,难道继承100次?3. 装饰模式实现对方法的增强一个抽象的煎饼一个具体的煎饼抽象的装饰者的构造方法要求传入一个煎饼一个加鸡蛋的装饰者一个加火腿的装饰者测试类图...原创 2019-10-21 20:23:28 · 147 阅读 · 0 评论 -
设计模式(九):外观模式
1. 定义优点:缺点:2 .实现购买积分礼物积分礼物类校验是否可以支付礼物支付礼物物流生成订单模块将上面的三个模块隐藏起来,对外开放礼物兑换的接口(外观模式的核心)测试使用3 查看类图关系...原创 2019-10-21 13:12:07 · 90 阅读 · 0 评论 -
设计模式(八):原型模式
1. 定义使用场景当直接创建对象的代价比较大时,则采用这种模式 。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。优点缺点2. 克隆一个类实现一个mail类,重写clone方法写一个mailutil工具类主函数:克隆10次mail类结果3. 深克隆和浅克隆3.1...原创 2019-10-20 20:45:46 · 132 阅读 · 0 评论 -
设计模式(七): 单例模式(懒汉、饿汉、静态内部类、双重检验锁、枚举、序列化反序列化、反射攻击、容器单例)
1. 定义优点缺点特性:(1)私有构造函数(2)线程安全(3)延迟加载(4)序列化和反序列化(5)反射攻击2. 懒汉模式多线程创建:主函数直接调用开启线程调试:类型设置为Thread开始调试:thread0thread1直接往下走,生成两个对象。3. 双重检验锁...原创 2019-10-17 20:34:52 · 343 阅读 · 0 评论 -
设计模式(六): 建造者模式
1. 定义原创 2019-10-12 13:29:55 · 93 阅读 · 0 评论 -
继承,装饰模式,动态代理
继承,装饰模式,动态代理都是实现了对方法得扩展。1.猫定义接口:public interface Cat { public void run(); public void eat();}实现普通得猫:public class Mycat implements Cat { @Override public void run() { Sys...原创 2019-01-27 18:23:29 · 122 阅读 · 0 评论 -
设计模式(一): UML类图和时序图
1.类图(1)类图的继承(extends)和实现(implements)大雁实现了飞翔的接口,大雁“虚线”转向了飞翔,空心三角号。唐老鸭继承了鸭这个类,实线+空心三角号。(2)关联关系:通常是一个类用另一个类当作属性企鹅与气候是关联关系:用实线加箭头表示企鹅关联气候(企鹅把气候作为属性)(3)依赖关系:通常是一个类把其他类作为参数或者返回值动物依赖水和氧气,用虚线+箭头表示。(动...原创 2019-10-06 21:00:57 · 533 阅读 · 0 评论 -
设计模式(二): 七大设计原则
1. 开闭原则原创 2019-10-07 15:26:27 · 145 阅读 · 0 评论 -
设计模式(三): 简单工厂
1. 定义原创 2019-10-10 19:59:11 · 90 阅读 · 0 评论 -
设计模式(四): 工厂方法
1. 定义工厂方法的缺点2. 更多的factory实现类相比简单工厂模式,抽象工厂模式需要一个工厂接口和很多的实现类去实现不同的类型的工厂一个抽象的video和两个实现类JavaVideo和PythonVideo一个抽象的VedioFactory和两个VedioFactory实现类主函数3. 类图项目代码:https://github.com/LUK-qianl...原创 2019-10-10 20:27:43 · 107 阅读 · 0 评论 -
设计模式(五): 抽象工厂
1. 定义使用场景优点缺点产品族:比如美的产品等级结构:比如空调通过唯一的产品族和产品等级结构就可以确定唯一的产品。原创 2019-10-11 13:45:07 · 98 阅读 · 0 评论 -
单例模式
饿汉式:public class Singleton{ private static Singleton singleton = new Singleton (); private Singleton (){} public Singleton getInstance(){return singletion;} } 懒汉式:public class S...原创 2019-04-10 20:57:34 · 89 阅读 · 0 评论