设计模式与架构
gavin.jin
在这个套路过剩的年代,唯一的技巧就是坚持。
展开
-
Java设计模式:状态机模式
public class State { private String value; public String getValue() { return value; } public void setValue(String value) { this.value = value; } public void method1() { System.out...转载 2019-04-27 23:07:56 · 789 阅读 · 0 评论 -
23个设计模式的理解
面试:你懂什么是分布式系统吗?Redis分布式锁都不会?>>> 23个设计模式是23个设计过程中经常重复出现的23种问题,以及如何依据OOP设计原则更好地解决这些问题。作为OOP新手,一种很好的理解方式就是把23个设计模式与23个具体问题对应,本文尝试为每种模式找到一个最贴切、最自然的例子。一、创建型模式 1、抽象工厂Abstract Factory 全球连锁的披萨店,在...原创 2012-11-11 12:29:00 · 94 阅读 · 0 评论 -
适配器模式2-对象的适配器模式
面试:你懂什么是分布式系统吗?Redis分布式锁都不会?>>> 与类的适配器模式一样,对象的适配器模式吧被适配的类的api转换成目标类的api,但是与类的适配器模式不同的是,对象的适配器模式是使用的委派关系连接到adaptee类。 模式所涉及的角色如下: 1:目标(Target):这是所期待的接口,可以是具体的类,也可以是抽象类 2:源(adaptee...原创 2012-03-25 15:41:00 · 69 阅读 · 0 评论 -
适配器设计模式1
面试:你懂什么是分布式系统吗?Redis分布式锁都不会?>>> 1:定义: 是把一个类的接口变换成客户端所期待的另外一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 2:分类: a:类的适配器模式 b:对象适配器模式 3: 下面详细分析类的适配器模式 a:涉及到的角色 目标(Target)角色:是期待得到的接...原创 2012-03-25 12:26:00 · 59 阅读 · 0 评论 -
版本方法(Template Method)模式
面试:你懂什么是分布式系统吗?Redis分布式锁都不会?>>> 版本方法模式是基于继承的代码复用的基本技术,版本方法模式的结构和用法也是面向对象设计的核心。包括基本方法和模块方法, 模板方法模式涉及的角色 1: 抽象模板角色有如下的责任: a:定义了一个或多个抽象方法,以便让子类实现,这些抽象方法叫做基本方法,他们是一个顶级逻辑的组成步骤。 b:...原创 2012-03-24 14:38:00 · 114 阅读 · 0 评论 -
代理模式
面试:你懂什么是分布式系统吗?Redis分布式锁都不会?>>> 简介 即Proxy Pattern,23种java常用设计模式之一。 代理模式的定义:给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。 代理模式的主要作用有两点: 1. 因为某些原因一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 Q: 何为“不...原创 2012-03-20 12:06:00 · 70 阅读 · 0 评论 -
单例模式
面试:你懂什么是分布式系统吗?Redis分布式锁都不会?>>> java与模式读书笔记 //懒汉式单例模式 class Soup1 { private Soup1() { } // (1) Allow creation via static method: public static Soup1 makeSoup() { return new Soup1(); } }...原创 2012-03-17 23:11:00 · 78 阅读 · 0 评论 -
对面向对象设计原则
面试:你懂什么是分布式系统吗?Redis分布式锁都不会?>>> java与模式读书笔记 为了调高系统的可维护性和可复用性,依据下面的原则设计系统 “开-闭”原则(Open-ClosedPrinciple)是面向对象的可复用设计(Object OrientedDesign或OOD)的基石。其他设计原则(里氏代换原则、依赖倒转原则、合成/聚合复用原则、迪米特法则、接口隔离...原创 2012-03-17 22:45:00 · 90 阅读 · 0 评论 -
设计与使用迭代器
面试:你懂什么是分布式系统吗?Redis分布式锁都不会?>>> java与模式读书笔记 0: 迭代器设计模式又称迭代子设计模式。 1.迭代器设计 迭代器是一种模式,它可以使得对于序列类型的数据结构的遍历行为与被遍历的对象分离,即我们无需关心该序列的底层结构是什么样子的。 一般的迭代器对外提供的接口有: [1]检查是否至序列末端; [2]返回当前的对象; [3]过渡到...原创 2012-03-17 22:20:00 · 69 阅读 · 0 评论 -
工厂模式-之1
面试:你懂什么是分布式系统吗?Redis分布式锁都不会?>>> 这个代码是《java编程思想》中的例子,其实不仅仅是工厂模式的体现,还有饿汉式单例模式的应用。 package innerclasses; //: innerclasses/Factories.java import static net.mindview.util.Print.*; interface...原创 2012-03-04 22:38:00 · 76 阅读 · 0 评论 -
组合/聚集复用原则
面试:你懂什么是分布式系统吗?Redis分布式锁都不会?>>> 组合/聚合复用原则(Composite/Aggregate Reuse Principle CARP).组合和聚合都是对象建模中关联(Association)关系的一种.聚合表示整体与部分的关系,表示“含有”,整体由部分组合而成,部分可 以脱离整体作为一个独立的个体存在。组合则是一种更强的聚合,部分组成整体,...原创 2012-11-27 15:39:00 · 137 阅读 · 0 评论 -
生成器模式(Builder)解析例子
面试:你懂什么是分布式系统吗?Redis分布式锁都不会?>>> 生成器模式属于对象结构型模式,其意图是将一个复杂对象的构建与表示分离,使得同样的构建创建过程可以创建不同的表示。 适用性: 1. 当创建复杂对象的算法应该独立于该对象的组成部分以及装配方式时 2. 当构造过程必须允许被构造的对象有不同的表示时。 参与者: 1)生成器Builder: 为创建一个Pr...原创 2012-11-30 14:18:00 · 375 阅读 · 0 评论 -
设计模式的分类与设计原则
一、设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 其实还有两...原创 2019-04-27 23:20:13 · 122 阅读 · 0 评论 -
策略模式(Strategy)
面试:你懂什么是分布式系统吗?Redis分布式锁都不会?>>> 设计模式,无论是coder们业余聊天,还是面试时面试官喜欢出的问题中,都会看到它的影子。设计模式,是基于面向对象之上的,应用好设计模式,我们在平时开发,还是架构设计,在系统的架构性,可拓展,可维护性方面的考虑都会有质的提升。当我们会一些基础语法,逻辑控制之后,就需要考虑我现在写的代码,在以后的拓展,维护...转载 2019-02-23 00:49:00 · 214 阅读 · 0 评论 -
MVC架构 在Android中的使用
面试:你懂什么是分布式系统吗?Redis分布式锁都不会?>>> MVC概念 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。...转载 2016-11-17 23:04:00 · 103 阅读 · 0 评论 -
工厂模式------之三
面试:你懂什么是分布式系统吗?Redis分布式锁都不会?>>> 建立配置文件,fruit.properties,内容如下: apple=com.gavin.reflect.Apple2 orange=com.gavin.reflect.Orange2 并将该配置文件放在res文件夹下 package com.gavin.reflect; import java....原创 2013-05-06 20:39:00 · 82 阅读 · 0 评论 -
工厂模式-之2
面试:你懂什么是分布式系统吗?Redis分布式锁都不会?>>> 使用反射,有效的避免了每添加一个类,都需要修改factory方法 package com.gavin.reflect; interface fruit{ public abstract void eat(); } class Apple implements fruit{ publi...原创 2013-05-06 20:32:00 · 73 阅读 · 0 评论 -
备忘录设计模式
面试:你懂什么是分布式系统吗?Redis分布式锁都不会?>>> 备忘录(Memento Pattern)模式 一:概念 1:定义: 备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。 2: 用意: 在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存前的状态。 3:角色...原创 2013-03-16 08:02:00 · 112 阅读 · 0 评论 -
状态模式
面试:你懂什么是分布式系统吗?Redis分布式锁都不会?>>> 1. 概述 对象的行为随着其状态的不同而不同。 2. 解决的问题 主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同的一系列类当中,可以把复杂的逻辑判断简单化。 3. 模式中的角色 3.1 上下文环境(Context):它定义了客户程序需要的接口并维护一个...原创 2013-03-15 11:30:00 · 80 阅读 · 0 评论 -
访问者模式
面试:你懂什么是分布式系统吗?Redis分布式锁都不会?>>> 一、引子 对于系统中一个已经完成的类层次结构,我们已经给它提供了满足需求的接口。但是面对新增加的需求,我们应该怎么做呢?如果这是为数不多的几次变动,而且你不用为了一个需求的调整而将整个类层次结构统统地修改一遍,那么直接在原有类层次结构上修改也许是个不错的主意。 但是往往我们遇到的却是:这样的需求变动也...原创 2013-03-14 16:11:00 · 148 阅读 · 0 评论 -
调停者模式
面试:你懂什么是分布式系统吗?Redis分布式锁都不会?>>> 在阎宏博士的《JAVA与模式》一书中开头是这样描述调停者(Mediator)模式的: 调停者模式是对象的行为模式。调停者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显引用。从而使它们可以较松 散地耦合。当这些对象中的某些对象之间的相互作用发生改变时,不会立即影响到其他的一些对象之间的相互作...原创 2013-03-14 11:42:00 · 103 阅读 · 0 评论 -
观察者模式和发布订阅模式的区别
从下图中可以看出,观察者模式中观察者和目标直接进行交互,而发布订阅模式中统一由调度中心进行处理,订阅者和发布者互不干扰。这样一方面实现了解耦,还有就是可以实现更细粒度的一些控制。比如发布者发布了很多消息,但是不想所有的订阅者都接收到,就可以在调度中心做一些处理,类似于权限控制之类的。还可以做一些节流操作。 二 概念上的区别 1.观察者模式,目标和观察者是基类,目标提供维护观察...原创 2019-08-04 10:21:19 · 3502 阅读 · 0 评论