java设计模式
醉墨重生
世间万物终有循环,太极阴阳始的初衷。
展开
-
23种设计模式之单例模式
在核心java中,主要有三种类型的设计模式,它们可进一步分为以下子部分: 1. 创造设计模式工厂模式抽象工厂模式单例模式原型模式Builder模式结构设计模式适配器(Adapter)模式桥接(Bridge)模式组合模式装饰者(Decorator)模式外观(Facade)模式享元(Flyweight)模式代理(Proxy)模式行为设计模式责任链模式原创 2018-01-24 17:07:50 · 222 阅读 · 0 评论 -
23种模式之迭代器模式
场景提供一种可以遍历聚合对象的方式。又称为:游标cursor模式。聚合对象:存储数据迭代器:遍历数据迭代器接口public interface MyIterator { void first(); //将游标指向第一个元素 void next(); //将游标指向下一个元素 boolean hasNext();//判断是否存在下一个元素原创 2018-01-26 13:03:09 · 160 阅读 · 0 评论 -
23种设计模式之中介者模式
中介者模式本质解耦多个部门对象之间的交互关系。每个对象都持有中介者对象的引用,只跟中介者对象打交道。我们通过中介者对象统一管理这些交互关系android最常见的场景MVC模式(其中的C),控制器就是一个中介者对象。M和V都和它打交道总经理接口:总经理有两件事情:注册每个部门,向部门发送命令//总经理接口public interface Mediator { v原创 2018-01-26 14:41:00 · 264 阅读 · 0 评论 -
23种设计模式之命令模式
定义:将一个请求封装为一个对象,从而使我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可以撤销的操作,也称之为:动作Action模式,事务transaction模式。 结构:Command抽象命令类ConcreterCommand具体命令类Invoker调用者/请求者Receiver接收者Client客户类命令接口:定义一个执行方法/** *原创 2018-01-26 15:39:35 · 159 阅读 · 0 评论 -
23种设计模式之解释器模式
介绍是一种不常用的设计模式用于描述如何构成一个简单的语言解释器,主要用于使用面向对象语言开发的编译器和解释器设计。当我们需要开发一种新的语言时,可以考虑使用解释器模式。开发中常见的场景EL表达式式的处理正则表达式解释器。SQL语法的计数器。数学表达式解析器原创 2018-01-26 15:48:42 · 172 阅读 · 0 评论 -
23种设计模式之策略模式
场景:有四个上图情况不使用策略模式的时候的代码是这样的 public double getPrice(String type, double price) { if (type.equals("普通客户小批量")) { System.out.println("不打折,原价"); return price;原创 2018-01-26 16:42:32 · 256 阅读 · 0 评论 -
23种设计模式之模板方法模式(template method)
场景:我们去银行,一般分三步,取号排队,办理具体的业务 ,反馈评分。只有办具体的业务我们是不确定的,今天我有可能取钱,明天有可能存钱,也有可能后天去和妹子搭讪。这时候我们就可以做一个模板模式 模板定义public abstract class BankTemplateMethod { public void takeNumber() { System.out.p原创 2018-01-26 17:07:31 · 259 阅读 · 0 评论 -
23种设计模式之状态模式
场景电梯的运行 维修、正常、自动关门、自动开门、向上运行、向下运行、消防状态。红绿灯 红灯、黄灯、绿灯网上购物时,订单的状态 下单 已付款已发货送货中已收货核心:用于解决系统中复杂对象状态转换以及不同状态下行为的封装问题。结构: Context环境类环境类中维护一个State对象,他是定义来了当前的状态。State抽象状态类ConcreteS原创 2018-01-27 08:37:54 · 249 阅读 · 0 评论 -
23种设计模式之观察者模式
场景这里举一个列子,比如现在网上会有很多主播,比如什么大司马,55开,东北大鹌鹑等。就以这些主播为例,大司马有很多粉丝,每个人呢都可以关注他,或者取消关注,他发一条信息给所有他的粉丝说我今晚8点上线等.第一种表达方式:自己定义观察者和被观察者接口首先定义粉丝接口,会实时收到主播信息,这是肯定需要主播这个对象public interface Observer { vo原创 2018-01-27 10:27:29 · 213 阅读 · 0 评论 -
23种设计模式之备忘录模式
场景:Word文档编辑时,忽然电脑死机,再打开时。可以看到Word提示你恢复到以前的文档管理系统中,公交撤回功能。公文发送出去后,想撤回来核心:就是保存某个对象内部状态的拷贝,这样以后就可以将该对象恢复到原先的状态。结构:源发器类Originator备忘录类Memento负责人类CareTake源发器类public class Emp {原创 2018-01-27 11:11:53 · 246 阅读 · 0 评论 -
23种设计模式之责任链模式
定义:将能够处理同一类请求的对象连成一条链,所提交的请求将沿着链传递,链上的对象逐个判断是否有能力处理该请求,如果能则处理,如果不能则传递给链上的下一个对象。场景: 1. 大学中,奖学金的审批 2. 公司中,公文的审批。举例:员工请求,小于3天,主任审批;大于3天小于10天,经理审理;大于10天,小于30天,总经理审批;否则直接让他辞职回家封装请假的基本信息/** *原创 2018-01-26 12:02:33 · 227 阅读 · 1 评论 -
23种设计模式之享元模式(FlyWeight)
场景内存属于稀缺资源,不要随便浪费。如果有多个完全相同或者相似的对象,我们可以通过享元模式,节省内存。核心:享元模式一共享的方式高效地支持大量细粒度对象的重用。 享元模式对象能 做到共享的关键是区分内部状态和外部状态。内部状态:可以共享,不会随环境变化而变化。 外部状态:不可以共享,会随着环境变化而改变。享元模式的实现 FlyweightFac原创 2018-01-26 11:00:30 · 213 阅读 · 0 评论 -
23中设计模式之工厂模式
工厂模式实现了创建者和调用者的分离详细分裂: 简单工厂模式 工厂方法模式 抽象工厂模式面向对象设计的基本原则OCP(开闭原则):一个软件实体应当对外开放,对修改关闭DIP(依赖倒转原则):要针对接口编程,不要针对实现编程LoD(迪米特原则):只与你直接朋友通信,而避免与陌生人通信.简单工厂模式定义一个接口Carpublic interfac原创 2018-01-25 08:31:48 · 269 阅读 · 0 评论 -
23种设计模式之builder设计模式
举一个列子,手机有很多小零件组成,这里我假设手机只有手机壳,电池和屏幕三个部分组成 电池//电池public class Battery { String name; public Battery(String name) { this.name = name; } public String getName() {原创 2018-01-25 09:35:37 · 214 阅读 · 0 评论 -
23种设计模式之原型模式prototype
* 当使用New关键字实例化对象的时候,很复杂,可以考虑原型模式来实现!强调内容 再则就是New对象比较耗时,克隆(clone)比较节省时间!*浅克隆public class Sheep implements Cloneable { private String name; private Date birthday; public Sheep(Str原创 2018-01-25 10:47:40 · 168 阅读 · 0 评论 -
23种设计模式之适配器模式
首先我们假设有个电脑但是键盘不能打字了,这时候我们有个键盘,没有线(举例不好,非要抬杠,当我没说)。 1.我们键盘有个方法可以打字public class keyboard { public void method() { System.out.print("可以打字"); }}需要一个连接接口可以连接电脑和键盘并提供了方法public int原创 2018-01-25 12:02:04 · 201 阅读 · 0 评论 -
23种设计模式之代理模式
静态代理(静态定义代理类)这里我举一个就是明星和经济人的关系,经纪人可以管理面谈,签合同,订票,收钱,除了唱歌 明星接口public interface Star { /** * 面谈 */ void confer(); /** * 签合同 */ void signContract(); /**原创 2018-01-25 14:14:59 · 187 阅读 · 0 评论 -
23种设计模式之桥接模式
首先看下商场里买电脑的一张图 不使用桥接模式时的代码public interface Computer { void sale();}class Desktop implements Computer { @Override public void sale() { System.out.println("销售台式机!"); }原创 2018-01-25 15:31:36 · 293 阅读 · 0 评论 -
23种设计模式之组合模式
应用场景:把部分和整体的关系用到树形结构来表示,从而使客户端可以使用统一的方式处理部分对象和整体对象。组合模式核心: 1)抽象构件(component)角色:定义了叶子和容器构件的共同点。 2)叶子(leaf)构件角色:无子节点 3)容器(composite)构件角色:有容器特征,可以包含子节点。//抽象组件角色public interface C原创 2018-01-25 16:55:25 · 285 阅读 · 0 评论 -
23种设计模式之装饰模式
职责:动态的为一个对象增加一个新的功能装饰模式是一个用于代替继承的技术,无须通过继承增加子类就能扩展对象的新功能,使用对象的关联关系代替继承关系,更加灵活,同时避免类型体系的快速膨胀。实现细节Component抽象控件组件真实对象和装饰对象有相同的接口。这样客户端就能够以与真实对象相同的方式同装饰对象进行交互ConcreteComponent具体构件角色(真实对象)原创 2018-01-26 09:19:57 · 187 阅读 · 0 评论 -
23种设计模式之外观模式
核心:为了系统提供统一的入口,封装子系统的复杂性,便于客户端调用。代码工商局接口public interface 工商局 { void checkName();}合肥工商局public class 合肥工商局 implements 工商局{ @Override public void checkName() { System原创 2018-01-26 09:51:32 · 209 阅读 · 0 评论 -
单例设计模式补充-volatile 关键字
之前写过单例模式23种设计模式之单例模式volatile关键字防止重排序 如图:多线程的时候,可能会导致开辟内存之后直接将给变量复制了,导致重排序线程可见性 - 某一个线程改了公用对象(变量),短时间内另一个线程可能是不可见的,因为每一个线程都有自己的缓存区(线程工作区) 如案例 public static void main(String[] args) {...原创 2018-03-20 08:19:26 · 389 阅读 · 0 评论