设计模式
迎风奔跑
知耻后勇!
展开
-
设计模式—那点事儿
软件设计遵循的基本原则:1.高内聚、低耦合。2.面向抽象编程。3.多用组合少用继承。4.开闭-原则:对扩展开发,对修改关闭。原创 2015-08-26 08:41:46 · 1036 阅读 · 0 评论 -
Java大白话讲解享元模式(Flyweight)
一、概念一个系统中若存在大量相同或相似的对象(比如26个英文字母),则只共享一份就可以了(并非单例模式),没有必要为每份相同的东西还都单独实例化出一个对象,浪费性能。(有点缓存的意思)二、例如比如26个英文字母,一个文本中有10MB的26个英文字母,那你解析出来的时候需要为每一个字母都创建一个对象的话(10M那么大,对象数不可直视。。。),内存肯定扛不住。所以可以用享元模式,只创建26个对象进行共...转载 2018-04-13 08:50:53 · 1785 阅读 · 0 评论 -
观察者模式 及 观察者与装饰者配合使用
观察者模式多应用预警提醒等系统,当目标对象发生改变时,会自动通知相关的观察者。例如:高档小区的监控系统,银行预警系统,地震预警系统,温度预警系统等。以温度预警系统为例来说明观察者模式:当气象部门获取温度超过某一阈值时,会向政府、单位、个人发出高温预警通知。如图,观察对象和观察者之间的关系是一对多的依赖关系,当观察对象发生改变时,依赖于它的观察者都要做出应急处理。设计静态图如下:---------代...原创 2018-03-31 12:02:37 · 487 阅读 · 1 评论 -
装饰者模式
装饰者:当我们需要为某个现有的对象动态增加一个新的功能或职责时,可以考虑使用装饰者模式;某个对象由于动态增加新的功能或职责,为了避免适应这种变化而增加子类,导致子类膨胀过快;装饰者模式是在不改变原类文件和使用继承的情况下,动态的扩展一个功能,它通过创建一个包装对象,通过装饰来包裹真实对象,使用组合的方式对对象进行功能扩展,降低了继承这种强耦合性,做到了对扩展开放,对修改关闭。示例:顶级制作面包接口...原创 2018-03-30 17:35:04 · 142 阅读 · 0 评论 -
ClassForName应用于工厂模式
一、应用工厂接口:package com.example.demo.service;public interface IFruitFactory { public void sell(int count) ; public void eat();}实现类:package com.example.demo.service.impl;import com.example.demo.se...转载 2018-02-12 11:43:05 · 504 阅读 · 0 评论 -
桥接模式
桥接模式又称桥梁模式,在软件系统中某些类型由于自身的逻辑,具有两个或多个维度的变化,如何应对这种多维度的变化?桥接模式使得软件系统能够轻松的沿着多个方向变化,而又不引入额外的复杂度。桥接模式的用意是“将抽象化和实现化脱耦,使得二者可以独自的变化”。以电灯开关为例:所有电灯接口:package com.demo.bridge.light;public interface ILig原创 2015-09-29 13:58:12 · 671 阅读 · 0 评论 -
适配器模式
1.首先建一个抽象电源基类:package com.demo.adapter.base;public abstract class AbsBasePower { private float power; private String unit="v"; public AbsBasePower() { System.out.println("--走父类构造方法--");原创 2015-09-24 17:38:07 · 930 阅读 · 0 评论 -
原型模式-1
package com.demo.prototype.factory.impl;import com.demo.prototype.factory.ILifeFactory;import com.demo.prototype.pojo.DayLife;3public class LifeFactoryImpl implements ILifeFactory { private sta原创 2015-09-07 15:57:15 · 1203 阅读 · 0 评论 -
工厂模式—抽象工厂
package com.demo.factory.model;/* * 抽象产品 */public abstract class AbstractFruit { //水果名字 public String name =""; public String getName() { return name; } public void setName(String name) {...原创 2015-08-26 15:15:38 · 403 阅读 · 0 评论 -
原型模式-2
原型模式的核心是一个clone方法,通过这个方法进行对象的复制,在java中,提供了一个Cloneable接口来标示这个对象是可复制的,在本例中DayLife对象就实现了Cloneable接口。为什么说是“标示”呢?查看Clonealbe类源码,会发现,Cloneable接口中一个方法都没有,这个接口的作用就是一个标示,只有实现该接口的对象才有可能被复制!如何从“有可能被复制”变成“可以被复制”呢原创 2015-09-07 17:26:52 · 462 阅读 · 0 评论 -
建造者模式
建造者模式和抽象工厂模式区别: 它们都是创建复杂对象的设计模式,区别在于Builder建造者模式着重于分步骤构建一个复杂对象(比如手机的各种套餐),而abstract factory 抽象工厂模式则着重于多个系列的产品对象(即对象组)的构造。建造者模式最后一步是返回具体产品,而抽象工厂模式是立即返回具体产品。原创 2015-09-01 11:03:45 · 515 阅读 · 0 评论 -
单例
package test.designpattern.single;public class SimpleSingle { static SimpleSingle out ; // 声明一个SimpleSingle类的引用 private SimpleSingle(){}; //将构造方法私有,禁止外部创建该类对象 static SimpleSingle simpleMethod原创 2015-07-14 17:00:25 · 493 阅读 · 0 评论 -
工厂模式—简单工厂
接口:package test.designpattern.testinterface;public interface IFruit { String getFruitName();}实现类:package test.designpattern.testinterface.impl;import test.designpattern.testinterface.IFruit;p...原创 2015-07-14 17:09:05 · 910 阅读 · 0 评论 -
单例模式
单例设计模式:顾名思义,确保一个类只有一个实例,并且自行实例化并向整个系统提供这个实例,保证系统中只有唯一一个实例。 使用单例要注意三个要点:1.该类只有一个实例,2.该类必须自动创建这个实例,3.该类必须自动向整个系统提供这个实例。设计:1.将类默认构造方法显示的设置为私有private,外部不能调用,2.含有一个静态私有的共享对象实例,声明为stat原创 2015-08-28 15:35:26 · 691 阅读 · 0 评论 -
Java 代理模式
1.代理模式代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。代理模式一般涉及到的角色有:抽象角色:声明真实对象和代理对象的共同接口;代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任转载 2015-03-11 13:22:35 · 537 阅读 · 1 评论 -
单例模式(Singleton)的同步锁synchronized
单例模式,有“懒汉式”和“饿汉式”两种。懒汉式单例类的实例在第一次被引用时候才被初始化。public class Singleton { private static Singleton instance=null; private Singleton() { } public static Singlet...转载 2018-03-16 17:36:11 · 1084 阅读 · 0 评论