
【Desgin-Pattern】
fanfan4569
登上山顶,欣喜掩盖疼痛。
展开
-
23种设计模式之策略模式(Strategy Pattern)
话说: 本来打算回家,一天更新一种,但后来事情太多了,前两天都没用电脑,尴尬,不能颓废。我看的书是 Head First设计模式,所以按这上面走。DuckTest(策略模式(Strategy Pattern))==============继承:———-如果使用继承的话,当涉及维护时,为了复用(reuse)目的而使用继承结局并不完美。例如:如果子类不想实现此功能,就必须覆盖掉超类中的方法。 缺点原创 2016-07-15 17:15:38 · 542 阅读 · 0 评论 -
【面向对象设计原则】之 单一职责原则(SRP)
刚重构完,深感clean code 之美,令吾陶醉,总结下吧。O(∩_∩)O 面向对象设计原则,有时这些原则之间相互依存(如OCP 与 DIP),有时又有点矛盾(如OCP 与 ISP) 虽只浅浅学习了SRP OCP LSP DIP ISP ,但还是被这思想深深震撼。就一个类而言,应该仅有一个引起它变化的原因为什么要SRP? 情景:如果有多个动机耦合在一起,则一个动机可能会削弱或者抑制原创 2017-07-04 09:20:07 · 435 阅读 · 0 评论 -
23种设计模式之观察者模式(Observer)
在JDK中,并非只有在java.util中才能找到观察者模式,其实在JavaBeans和Swing中,也都实现了观察者模式。观察者模式:定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知自动更新。类图:实现观察者模式的方法不止一种,但是以包含Subject与Observer接口的类设计的做法最常见自定义观察者和主题JAVA自带的Observer继承java.uti原创 2016-07-18 15:44:21 · 410 阅读 · 0 评论 -
23种设计模式之工厂模式(Factory)
使用new是最大的耦合使用反射可以解耦,但这里先不使用。 除了使用new操作符之外,还有更多制造对象的方法。而实例化这个活动不应该总是公开地进行,也会认识到初始化经常造成”耦合”问题。工厂模式:工厂方法和抽象工厂简单工厂方法:(并不是一种模式)-负责创建对象-使用的方法:继承-可以把你的客户代码从需要实例化的具体类中解耦工厂方法:一、依赖倒置原则(Dependency Inversion Pr原创 2016-07-22 16:09:48 · 635 阅读 · 0 评论 -
23种设计模式之命令(Command)模式
命令模式将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。将发出请求的对象和执行请求的对象解耦知识点:1.命令模式来实现“队列、日志和支持撤销错做”2.命令式宏3.空对象(null object) 当你不想返回一个有意的对象时,同时客户也可以讲处理null的责任转移给空对象。4.撤销到很早很早以前的状态: 使用一个堆栈记录操作过程的每一个命令下面原创 2016-08-24 00:41:20 · 441 阅读 · 0 评论 -
23种设计模式之适配(Adapter)模式与外观模式
适配器模式将一个类的接口,转换成客户期望的另一个接口。适配器让原本不兼容的类可以合作无间。分类: 1.“对象”适配器:使用组合 2.“类”适配器: 需要多重继承才能够实现它,所以在Java中是不可能的。顺便一提装饰者将一个对象包装起来以增加新的行为和责任。举个例子 外观(Facade)模式将一个类的接口,转换成客户期望的另一个接口。适配器让原本不兼容的类可以合作无间。它改变原创 2016-08-26 01:23:49 · 434 阅读 · 0 评论 -
23种设计模式之建造者模式
参考资料:设计模式之禅建造者模式包含如下角色: - Builder:抽象建造者 - ConcreteBuilder:具体建造者 - Director:指挥者 - Product:产品角色 通用类图较详细类图原创 2017-03-29 15:49:36 · 367 阅读 · 0 评论 -
【23种设计模式】之 目录
一、创建型模式(五种):工厂方法模式抽象工厂模式单例模式建造者模式原型模式二、结构型模式(七种):适配器模式装饰器模式代理模式外观模式桥接模式组合模式享元模式三、行为型模式(十一种):策略模式模板方法模式观察者模式迭代器模式责任链模式命令模式备忘录模式状态模式访问者模式中介者模式解释器模式。原创 2017-04-24 16:08:20 · 380 阅读 · 0 评论 -
【23种设计模式】之 迭代器模式(Iterator Pattern)
Q:迭代器模式解决什么问题: A: 1。由不同的集合(collection)类型所造成的遍历。 2。遍历而不暴露内部的表示。 3。提高内聚性,体现单一原则 Q:迭代器模式的定义: A:提供一种法法顺序访问一个聚合对象中的格格元素,而又不暴露其内部的表示。下图是:Iterator在LinkedList中的实现Tips:①Iterator小知识点②Java 5包含一原创 2017-04-24 17:20:52 · 395 阅读 · 0 评论 -
【23种设计模式】之 组合模式(Composite Pattern)
需求: (1)需要某种树形结构,可以容纳菜单、子菜单和菜单项 (2)需要确定能够在每个菜单的各个项之间游走,而且至少要像现在用迭代器一样方便。 (3)需要能够更有弹性地在菜单项之间游走。比方说:可能只需要遍历甜点菜单,或者可以遍历餐厅的整个菜单(包括甜点菜单在内)组合模型:允许你将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合原创 2017-04-26 10:04:28 · 2710 阅读 · 0 评论 -
【23种设计模式】之 代理模式(Representative Pattern)
代理模式:为另一个对象提供一个替身或占位符以控制对这个对象的访问。 使用代理模式创建代表(representative)对象,让代表对象控制某对象的访问,被代理的对象可以是远程的对象、创建开销大的对象或需要安全控制的对象。代理控制访问:就好比客户端不知如何和远程对象沟通,通过远程代理控制访问,直接处理网络上的戏剧节。RMI访问图原创 2017-04-30 21:01:12 · 516 阅读 · 0 评论 -
【23种设计模式】之 访问者模式(Visitor Pattern )
当你想要为一个对象的组合增加新的能力,且封装并不重要时,就使用访问者模式。访问者必须参观组合内的每个元素。比如,此图:访问者的优点:① 允许你对组合结构加入新的操作,而无需改变结构本身。② 想要加入新的操作,相当容易。③ 访问者所进行的操作,其代码是集中在一起的。访问者的缺点:① 当采访访问者模式的时候,就会打破组合类的封装② 因为游走的功能牵涉其中,所以对组合结构的改变就更加困难。拿JVM打印指原创 2017-04-30 21:29:00 · 559 阅读 · 0 评论 -
23中设计模式之单例(Singleton)模式
单例模式:确保一个类只有一个实例,并提供一个全局访问点有一些对象有时候只需要一个,比方说:线程池(threadpool)、缓存(cache)、对话框、处理偏好设置和注册表(registry)的对象、日志对象、充当打印机、显卡等设备的驱动程序的对象。处理多线程的三种单例方法:1.同步(synchronized)方法这个方法性能大大降低2.使用急切创建实例原创 2016-07-29 22:47:23 · 512 阅读 · 0 评论 -
23种设计模式之装饰者模式(Decoration)
装饰者模式装饰的技巧:能够在不修改任何底层代码的情况下,给你的(或别人的)对象赋予新的职责。设计原则:类应该对扩展开放,对修改关闭。既然装饰者和被装饰对象有相同的超类型,所有在任何需要原始对象(被包装的)的场合,可以用装饰过的对象代替它。装饰者原创 2016-07-19 20:18:43 · 583 阅读 · 0 评论 -
【23种设计模式】之 原型模式(Prototype Pattern)
模式定义: 原型模式(Prototype Pattern):原型模式是一种对象创建型模式,用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。原型模式允许一个对象再创建另外一个可定制的对象,无须知道任何创建的细节。 应用场景:(1) ctrl c, ctrl v 复制,粘贴(2) struct2 创建action 对象 在Struts2中为了保证线程的安全性,Actio原创 2017-08-15 17:23:05 · 617 阅读 · 0 评论