
《设计模式系列》
凶残的程序员
博观而约取,厚积而薄发
展开
-
Java设计模式——工厂方法(Factory Method)
什么是工厂方法定义一个创建产品对象的工厂接口,让子类决定实例化哪一个类,将实际创建工作推迟到子类当中。它的核心结构有四个角色,分别是【抽象工厂】Factory : 具体工厂类必须实现这个接口。在实际的系统中,这个角色也常常使用抽象类实现。【具体工厂】ConcreteFactory : 实现了抽象工厂接口的具体类。具体工厂角色含有与业务密切相关的逻辑。【抽象产品】Product :原创 2017-05-23 22:29:24 · 3219 阅读 · 1 评论 -
Java设计模式——原型模式(Prototype Pattern)
什么是原型模式用于创建重复的对象的最佳方式,同时又能保证性能。 这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。原型栗子原型模式实际代码比较简单,但是涉及到【java基本数据类型和引用类型】的概原创 2017-06-11 17:55:17 · 1607 阅读 · 1 评论 -
Java设计模式——责任链模式(Chain of Responsibility)
责任链责任链模式通俗来说就是关联一串能够处理事务的对象,使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。【view事件处理】【抽象处理者】Handler : 定义出一个处理请求的接口,抽象方法handleRequest()规范子类处理请求的操作。【具体处理者】ConcreteHandler :原创 2017-06-22 09:23:42 · 6384 阅读 · 1 评论 -
Java设计模式——建造模式(Builder Pattern)
Builder模式常用例子今天就简单粗暴的介绍一下Builder模式概念和使用。Dialog的创建 AlertDialog dialog = new AlertDialog.Builder(this) .setIcon(R.mipmap.ic_launcher) .setMessage("Hello World")原创 2017-06-10 22:50:30 · 9013 阅读 · 0 评论 -
Java设计模式——代理模式(Proxy Pattern)
什么是代理模式客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。为其他对象提供一个代理以控制对某个对象的访问。【中介,律师等】AbstractObject【抽象对象角色】 : 声明了目标对象和代理对象的共同接口。RealObject【委托对象】 : 代理对象所代表的东西。ProxyObject【代理对象】 : 代理对象内部含有委托对象的引用,从原创 2017-05-31 22:36:02 · 936 阅读 · 0 评论 -
Java设计模式——模板方法(Template Method)以及策略模式比较
什么是模板方法定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。是基于继承的代码复用的基本模式。结构类图 抽象模板【AbstractTemplate】【模板方法】templateMethod : 把基本操作方法组合在一起形成一个总算法或一个总行为的方法。【抽象方法】abstractMethod : 父类原创 2017-05-07 10:13:34 · 1419 阅读 · 0 评论 -
Java设计模式——策略(Strategy)
什么是策略模式将一组算法,封装到具有共同接口的独立类中,这些类可以相互转化。 结构类图 策略模式【Strategy】【抽象策略】Strategy : 通常由接口/抽象类实现,给出具体的策略所需要的方法。【具体策略】ConcreteStrategy : 具体实现的策略算法和步骤。【封装类】Context : 持有一个Strategy的引用。对策略二次封装,避免了对策略的直原创 2017-05-08 22:57:37 · 976 阅读 · 1 评论 -
Java设计模式——抽象工厂(Abstract Factory)以及工厂模式总结
抽象工厂和工厂方法的区别工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个抽象产品类。 工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式可以创建多个具体产品类。(与上面呼应)【个人认为】抽象工厂和工厂方法最明了的区别就是【抽象工厂有多个产品】结构类图先上图分析一波 【与工厂方法最主要的区别在于 iHeroFactory多了Wear()方法,多了 Iequipm原创 2017-05-24 21:33:58 · 968 阅读 · 0 评论 -
Java设计模式——单例(Singleton)
什么是单例单例是保证一个内存/进程里只有一个类的实例,并提供一个访问它的全局访问点。内存/进程中只有一个实例线程安全性能优化防止序列化产生新对象初用懒汉式饿汉式缺点 :单例会在加载类后一开始就被初始化,即使客户端没有调用 getInstance()方法。饿汉式的创建方式在一些场景中将无法使用:譬如 Singleton 实例的创建是依赖参数或者配置文件的,在 getInstance() 之前原创 2017-05-06 10:06:50 · 907 阅读 · 0 评论 -
Java设计模式——简单工厂(Simple Factory)
什么是简单工厂【又叫静态工厂】由一个工厂类来创建具有相同父类的类。【漫威的英雄有一个共同点,那就是他们都有很强的作战能力(分为智力,力量,和格斗技巧等)】结构类图 简单工厂【Simple Factory】iHeroFactory: 专门用来调度英雄,传入名字召唤漫威英雄。iHero : 定义英雄(产品)规范(都有超强的能力skill),可以使用接口或抽象类。 public int原创 2017-05-15 23:38:26 · 904 阅读 · 0 评论 -
Java设计模式——装饰者模式(Decorator Pattern)
装饰者模式装饰者模式也称为包装模式(Wrapper Pattern),属于结构型设计模式。该模式对客户端透明的方式来动态的扩展对象,(对扩展开放,对修改关闭)同时该模式也是继承关系的一种替代方法之一。总之就是动态的给对象添加一些额外的职责,类似钢铁侠可以组装不同武器。结构类图抽象组件(Component) :定义装饰方法的规范被装饰者(ConcreteCo...原创 2018-09-08 16:33:45 · 18264 阅读 · 1 评论