设计模式
吴帝永
这个作者很懒,什么都没留下…
展开
-
设计模式之反转控制(IOC)
反转 控制 (IOC:Inversion of Control)也称为依赖注入(DI:Dependency Injection),是Spring的核心可以把IOC模式看做是工厂模式的升华,可以把IOC看作是一个大工厂,只不过这个大工厂里要生成的对象都是在XML文件中给出定义的,然后利用Java的“反射”编程,根据XML中给出的类名生成相应的对象。从实现来看,IOC是把以前在工厂方法里写死的原创 2015-05-09 14:53:57 · 560 阅读 · 0 评论 -
工厂模式之抽象工厂模式
场景问题 举个生活中常见的例子——组装电脑,我们在组装电脑的时候,通常需要选择一系列的配件,比如CPU、硬盘、内存、主板、电源、机箱等。为讨论使用简单点,只考虑选择CPU和主板的问题。 事实上,在选择CPU的时候,面临一系列的问题,比如品牌、型号、针脚数目、主频等问题,只有把这些问题都确定下来,才能确定具体的CPU。 同样,在选择主板的时候,也有一系列问题,比如品牌、芯片组、集成原创 2015-08-12 14:29:28 · 1167 阅读 · 1 评论 -
策略模式
如果在一个系统里面有许多类,它们之间的区别仅在于它们的行为,那么使用策略模式可以动态的让一个对象在许多行为中选择一种行为。如果系统需要动态地在几种算法中选择一种。那么这些算法可以包装到一个个的具体算法类里面,而这些算法类都是一个抽象算法类的子类。下面例子采用策略模式实现加减乘除四种运算:public interface Operation { publicvoid o原创 2015-08-12 14:32:18 · 284 阅读 · 0 评论 -
工厂模式之工厂方法模式
先看代码:publicinterface Product { publicvoid getName();}publicclass AProduct implements Product{ publicvoid getName() { System.out.println("I am product A"); }}原创 2015-08-12 14:29:56 · 445 阅读 · 0 评论 -
适配器模式
类的适配器模式假如需要使用程序中现有的某个类,且该类的接口不符合需求,但该类已经实现好了,为了不影响原有程序,不便对该类本身修改,这时可以用一个新的类继承原来的类,然后在新的类中去重载原来类的某些方法或添加一些新的方法。代码如下:原有的类:public class Person { private String name; private Strin原创 2015-08-12 14:32:43 · 315 阅读 · 0 评论 -
合成复用原则
合成复用原则又称为组合/聚合复用原则(Composition/Aggregate Reuse Principle, CARP),其定义如下:合成复用原则(Composite Reuse Principle, CRP):尽量使用对象组合,而不是继承来达到复用的目的。合成复用原则就是在一个新的对象里通过关联关系(包括组合关系和聚合关系)来使用一些已有的对象,使之成为新对象的一部分;新对象通过委原创 2015-08-12 14:30:36 · 945 阅读 · 0 评论 -
代理模式
为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。一般涉及到的角色有:抽象角色:声明真实对象和代理对象的共同接口,为什么要继承这么一个抽象类(或接口),原因是为了保证代理对象提供足够的方法调用真实对象(至少要实现接口的所有抽象方法,否则实例化的时候会报错)代理角色:代理对象角色原创 2015-08-12 14:27:19 · 347 阅读 · 0 评论 -
六大原则
单一职责原则定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。 问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。解决方案:遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。这样,当修改类T1时,不会使职责P2发生故障风险;同理原创 2015-08-12 14:31:19 · 356 阅读 · 0 评论 -
多例模式
多例模式分两种:无上限多例模式:与普通类一样,直接用new来实例化,这里不做讨论。有上限多例模式:把实例的上限当做逻辑的一部分,并建造到多例类的内部。例如,某公司有3台服务器,公司员工都可以使用这些服务器,比如,小明和小华都需要用server1这台服务器,他们所做的操作显然都是作用于server1(同一个实例)的,所以server1属于单例类,同理server2、server3也属于单原创 2014-10-25 16:15:03 · 461 阅读 · 0 评论 -
状态模式
状态模式,又称状态对象模式(Pattern of Objects for States),状态模式是对象的行为模式。状态模式允许一个对象在其内部状态改变的时候改变其行为,这个对象看上去就像是改变了它的类一样。状态模式的结构用一句话来表述,状态模式把所研究的对象的行为包装在不同的状态对象里,每一个状态对象都属于一个抽象状态类的一个子类。状态模式的意图是让一个对象在其内部状态改变的时候,其原创 2015-08-12 14:28:00 · 519 阅读 · 0 评论