随笔分类 -  设计模式

摘要:需求:现需要将多个数据源的数据导入到目标数据库,这是一个经典的生产消费应用的例子。 直接上代码,看下实现: 队列我们采用线程安全的ConcurrentQueue队列: 如果我们不使用这个队列,只要满足IDataCollection接口,也可以进行替换: 生产者: 消费者: 方法委托,也写了个基类,其 阅读全文
posted @ 2017-12-15 14:15 二奎 阅读(2664) 评论(0) 推荐(0)
摘要:上一篇介绍了工厂模式,接下来介绍抽象工厂。 抽象工厂类图来自百度: 这个图看着有点晕,我们换张,来自博客园的: 工厂方法中,一个工厂只负责实例化一个类,而抽象工厂里一个工厂可以实现化两个(或多个类) 而这两个类是可以分别继承自不同的类的。这是关键。 工厂方法模式针对的是一个产品等级结构,就是子类全继 阅读全文
posted @ 2017-06-23 10:38 二奎 阅读(306) 评论(0) 推荐(0)
摘要:工厂模式有三个变种:1. 简单工厂,2.工厂方法,3 抽象工厂。 主要解决问题就是对象的实例化,通过我们实例化对象,就是采用 Class1 c = new Class1(),这种方式虽简单,但是维护比较麻烦, 于是就有简单工厂,我们来看代码: 继承自同一类所有的实例化工作都集中在一个工厂类中进行,如 阅读全文
posted @ 2017-06-22 17:13 二奎 阅读(158) 评论(0) 推荐(0)
摘要:观察者模式 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己 1. Subject是对主题的抽象,但具体维护通知对象是在子类ConcreteSubject的实现中,ConcreteSubject 阅读全文
posted @ 2017-06-20 16:15 二奎 阅读(279) 评论(0) 推荐(0)
摘要:模式方法模式类图: 定义:定义一个算法中的操作框架,而将一些步骤延迟到子类中。使得子类可以不改变算法的结构即可重定义该算法的某些特定步骤 模板方法模式要注意: 1. 为了可以让模板方法pay 能够让客户端使用,访问级别为public, 而其他方法的访问设置为protected,客户端不能使用。 这里 阅读全文
posted @ 2017-06-16 12:15 二奎 阅读(243) 评论(0) 推荐(0)
摘要:策略模式 类图 策略模式很好的诠释了面向对象的三大特征: 1.封装:Context封装了Strategy,以及对Strategy的操作及其他操作,如果要设置Strategy,必须通过Context来处理。 2.继承:ConcreteStrategy子类继承Strategy(这个的类图写的是接口,也可 阅读全文
posted @ 2017-06-15 16:44 二奎 阅读(187) 评论(0) 推荐(0)
摘要:状态模式类图: Context的request方法,根据自身的状态属性State, 执行state.handle方法,根据面向对象的多态原则,在运行时,由于可以动态修改Context的状态state,从而ConcreteState转化成另一个ConctreteState,执行各自的业务逻辑。 我总结 阅读全文
posted @ 2017-06-15 11:01 二奎 阅读(230) 评论(0) 推荐(0)
摘要:Decorator 装饰者模式: 类图如下: 注意: 1. Decorator继承于Component【IS A关系】, 继承的目的是使用装饰者和被装饰都拥有相同的接口。这样用户可以统一的把它们看作成Component,操作起来没有不同 2. Decorator又维护一个指向Component实例的 阅读全文
posted @ 2017-06-13 13:01 二奎 阅读(239) 评论(0) 推荐(0)
摘要:先抓一张网上的类图: 代理模式:就是使用一个代理类,代替了真正的我们要使用的类。 从图中可以看出 代理类proxy, 真正要使用的的类RealSubject. 它们都是Subject的子类 使用了代理类的主要目的: 一. 为了解耦。client使用的是代理类,而不是RealSubject, 业务代码 阅读全文
posted @ 2017-06-12 15:29 二奎 阅读(176) 评论(0) 推荐(0)
摘要:单例模式:主要关注三点: 1. 私有化构造器。 2. 静态公有方法方法,返回唯一实例。 3. 防止多线程程序并发导致的多实例的问题。 还有一种写法: 不用考虑多线程的问题。代码更简单。 阅读全文
posted @ 2017-06-09 12:04 二奎 阅读(136) 评论(0) 推荐(0)
摘要:1. 策略模式: 做什么 具体怎么做,主要强调怎么做。子类如何实现父类的方法,解决了如何做的问题。 2. 状态模式: 指状态的切换。每一个子类实现一个状态,并指定下一个切换的状态 3. 责任链模式:子类处理消息,如果处理不了,可以指定下一个子类处理,客户端指定每一个子类的下一个处理子类是哪一个。 阅读全文
posted @ 2017-02-23 13:51 二奎 阅读(116) 评论(0) 推荐(0)