设计模式
乔培宸
这个作者很懒,什么都没留下…
展开
-
【设计模式】工厂方法模式
/* 定义一个用于创建对象的接口,让子类决定实例化哪个类。工厂方法使一个类的实例化延迟到其子类。 工厂方法模式中有如下角色: Product:抽象产品类 ConcreteProduct:具体产品类,实现Product接口。 Factory:抽象工厂类,该方法返回一个Product类型的对象。 ConcreteFactory:具体工厂类,返回ConcreteProduct实例。 工厂原创 2017-11-18 13:44:45 · 231 阅读 · 0 评论 -
【设计模式】依赖倒置原则(Dependence Inversion Principle)
依赖倒置原则(Dependence Inversion Principle)定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类C是低层模块,负责基本的原子操作;假如修改类A,会给程序带来不必要的转载 2017-11-16 20:41:36 · 300 阅读 · 0 评论 -
【设计模式】代理模式
/* 代理模式也被称为委托模式,它是结构型设计模式的一种。在现实生活中我们用到类似代理模式的场景有很多,比如代理上网、打官司等。 定义:为其他对象提供一种代理以控制对这个对象的访问。 在代理模式中有如下角色: Subject:抽象主题类,声明真是主题与代理的共同接口方法。 RealSubject:真实主题类,代理类所代表的真实主题。客户端通过代理类间接地调用真实主题类的方法。原创 2017-11-18 21:00:54 · 233 阅读 · 0 评论 -
【设计模式】观察者模式
/* 观察者模式又称为发布-订阅模式,属于行为型设计模式的一种,是一个在项目中经常使用的模式。 定义:定义对象间一种一对多的依赖关系,每当一个对象改变状态时,则所有依赖于它的对象都会得到通知并被自动更新。 在观察者模式中有如下角色: Subject:抽象主题(抽象被观察者)。抽象主题角色把所有观察者对象保存在一个集合里,每个主题都可以有任意数量的观察者。抽象主题提供一个接口,可以增加和删原创 2017-11-19 21:12:38 · 297 阅读 · 0 评论 -
【设计模式】模板方法模式
/* 在软件开发中,有时会遇到类似的情况:某个方法的实现需要多个步骤,其中有些步骤是固定的;而有些步骤并不固定,存在可变性。 为了提高代码的复用性和系统的灵活性,可以使用模板方法模式来应对这类情况。 定义:定义一个操作中的算法框架,而将一些步骤延迟到子类中,使得子类不改变一个算法的结构即可重定义算法的某些特定步骤。 模板方法模式中有如下角色: AbstractClass:抽象类,定原创 2017-11-19 20:02:45 · 242 阅读 · 0 评论 -
【设计模式】回调方法、钩子方法以及模板方法模式
在面向对象的语言中,回调则是通过接口或抽象类来实现的,我们把实现这种接口的类称为回调类,回调类的对象称为回调对象,其处理事件的方法叫做回调方法。(摘自百度百科)那么通过上面那句话将百度百科中的“回调函数”翻译成JAVA版:回调方法就是一个通过回调对象的引用(java中的引用存的是对象的地址)调用的方法。如果你把回调对象的引用(地址)作参数传递给另一个方法,当这个引用被用来调用其所指转载 2017-11-19 19:35:30 · 555 阅读 · 0 评论 -
【设计模式】策略模式
/* 行为型模式主要处理类或对象如何交互及如何分配职责。 它共有11中模式:策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式和解释器模式。*//* 策略模式 定义:定义一系列的算法,把每一个算法封装起来,并且使它们可相互替换。策略模式使得算法可独立于使用它的客户而独立变化。 在策略模式中有如下角色: Contex原创 2017-11-19 18:40:45 · 342 阅读 · 0 评论 -
【设计模式】享元模式
/* 享元模式是池技术的重要实现方式,它可以减少应用程序创建的对象,降低程序内存的占用,提高程序的性能。 定义:使用共享对象有效地支持大量细粒度的对象。 要求细粒度对象,那么不可避免地使得对象数量多且性质相近。这些对象分为两个部分:内部状态和外部状态。内部状态是对象可共享出来的信息,存储在享元对象内部并且不会随环境的改变而改变; 而外部状态是对象依赖的一个标记,它是随环境改变而改变的并原创 2017-11-19 17:45:22 · 242 阅读 · 0 评论 -
【设计模式】外观模式
/* 外观模式也被称为门面模式。当我们开发Android的时候,无论是做SDK还是封装API,大多会用到外观模式,它通过一个外观类使得整个系统的结构只有一个统一的高层接口,这样能降低用户的使用成本。 定义:要求一个子系统的外部与内部的通信必须通过一个统一的对象进行。此模式提供一个高层的接口,使得子系统更易于使用。 在外观模式中有如下角色: Facade:外观类,知道哪些子系统类负责处理原创 2017-11-19 16:22:40 · 243 阅读 · 0 评论 -
【设计模式】装饰者模式
/* 装饰模式是结构型设计模式之一,其在不必改变类文件和使用继承的情况下,动态地扩展一个对象的功能,是继承的替代方案之一。 它通过创建一个包装对象,也就是装饰来包裹真实的对象。 定义:动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。 在装饰模式中有如下角色: Component:抽象组件,可以是接口或是抽象类,被装饰的最原始的对象。 Concre原创 2017-11-19 15:38:25 · 243 阅读 · 0 评论 -
【设计模式】代理模式详解
1 学习动态代理的目的 动态代理技术都是在框架中使用,例如:Struts1、Struts2、Spring和Hibernate中都使用了动态代理技术。如果你不想自己写个框架,那么你基本上是用上不动态代理技术的。学习动态代理技术的目的是为了更好的理解框架内部的原理,也就是说是为了将来学习框架打基础!动态代理技术有点难度!而且明白了动态代理技术可能一时也想不到他适合在什么情况下使用它。这些东西都会转载 2017-11-18 21:30:56 · 236 阅读 · 0 评论 -
【设计模式】单例模式的6种写法
// 单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。// 单例模式的6种写法// 1.饿汉模式public class Singleton { private static Singleton instance = new Singleton(); private Singleton() { } public static Singleton getInstan原创 2017-11-16 21:40:13 · 285 阅读 · 0 评论 -
【设计模式】建造者模式
/* 建造者模式也被称为生成器模式,它是创建一个复杂对象的创建型模式,其将构建复杂对象的过程和它的部件解耦,使得构建过程和部件的表示分离开来。 例如我们要DIY一台台式计算机,我们找到DIY商家。这时我们可以要求这台计算机的CPU、主板或者其他部件都是什么牌子的,什么配置的,这些部件是我们可以根据自己的需求来变化的。 但是这些部件组装成计算机的过程是一样的,我们无需知道这些部件是怎么组装原创 2017-11-18 15:01:23 · 281 阅读 · 0 评论 -
【设计模式】简单工厂模式
/* 简单工厂模式(又叫做静态工厂方法模式),其属于创建性设计模式,但并不属于23种GoF设计模式之一。 提到它是为了让大家能够更好地理解后面讲到的工厂方法模式。 定义:简单工厂模式属于创建性模式,其又被称为静态工厂方法模式,这是由一个工厂对象决定创建出哪一种产品类的实例。*//* 我们用生产计算机来举例,假设有一个计算机的代工生产商,它目前已经可以代工生产联想计算机了。 随着业务转载 2017-11-16 22:17:47 · 294 阅读 · 0 评论