2015年12月19日

工厂方法模式

摘要: 工厂方法模式是类的创建模式,又叫做虚拟构造子(Virtual Constructor)模式或者多态性工厂(Polymorphic Factory)模式。工厂方法模式的用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。实例:学雷锋UML类图对应的类结构图详细代码请参考我的git:htt... 阅读全文

posted @ 2015-12-19 22:26 wzyxidian 阅读(166) 评论(0) 推荐(0) 编辑

代理模式

摘要: 因为某个对象消耗太多资源,而且你的代码并不是每个逻辑路径都需要此对象, 你曾有过延迟创建对象的想法吗 ( if和else就是不同的两条逻辑路径) ? 你有想过限制访问某个对象,也就是说,提供一组方法给普通用户,特别方法给管理员用户?以上两种需求都非常类似,并且都需要解决一个更大的问题:你如何提 供一... 阅读全文

posted @ 2015-12-19 20:23 wzyxidian 阅读(141) 评论(0) 推荐(0) 编辑

装饰模式

摘要: 装饰模式:动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。样例有:孙悟空的七十二变,穿衣服等装饰模式的类图如下: 具体的类结构图:与上面的类图相对应装饰模式的简化 大多数情况下,装饰模式的实现都要比上面给出的示意性例子要简单。 如果只有一个ConcreteCom... 阅读全文

posted @ 2015-12-19 17:05 wzyxidian 阅读(366) 评论(0) 推荐(0) 编辑

2015年12月18日

依赖倒转原则

摘要: 依赖倒转原则 抽象不应该依赖细节,细节应该依赖抽象 通俗的解释,以计算机系统为例,就是要针对接口编程,不要对实现编程,无论主板、CPU、内存、硬件都是在针对接口设计的,如果针对实现来设计,内存就要对应到针对某个品牌的主板,那么会出现换内存需要把主板也换掉的尴尬。(内存的引脚、主板的插槽都是标准接口的... 阅读全文

posted @ 2015-12-18 16:32 wzyxidian 阅读(263) 评论(0) 推荐(0) 编辑

开放—封闭原则

摘要: 案例:求职考研两不误。考研失败,工作没准备,这是不行的开放——封闭原则:是说软件实体(类、模块、函数等等)应该可以扩展,但是不可修改。两个特征:对应扩展是开放的,对于更改是封闭的。怎么样的设计才能面对需求的改变却可以保持相对稳定,从而使得系统可以在第一个版本以后不断推出新的版本?:开放——封闭原则案... 阅读全文

posted @ 2015-12-18 15:46 wzyxidian 阅读(321) 评论(0) 推荐(0) 编辑

单一职责原则

摘要: 实例:拍摄UFO就一个类而言,应该仅有一个引起它变化的原因。定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。解决方案:遵循单一职... 阅读全文

posted @ 2015-12-18 15:05 wzyxidian 阅读(217) 评论(0) 推荐(0) 编辑

策略模式

摘要: 策略模式是一种定义了一系列算法的方法,从概念上来讲,所有这些算法完成的都是相同的工作,只是实现方式不同,他可以以相同的方式调用所有的算法或行为,减少了各种算法类与使用算法类之间的耦合。策略模式的Strategy类层次为Context定义了一系列的可供重用的算法和行为。策略模式的有点,简化了单元测试,... 阅读全文

posted @ 2015-12-18 14:31 wzyxidian 阅读(700) 评论(0) 推荐(0) 编辑

简单工厂模式

摘要: /*** * @author zhiyong wang* 简单工厂模式:* 例子:计算器* 题目:请用C++、Java、C#或VB.NET任意一种面向对象语言实现一个计算器控制台程序,要求输入两个数和运算符号,得到结果。**/UML类图结构图:Operation是抽象类,父类:package cn.... 阅读全文

posted @ 2015-12-18 00:15 wzyxidian 阅读(264) 评论(0) 推荐(0) 编辑

2015年12月16日

Java中的属性与字段的区别

摘要: Java中属性和字段的区别 Java中的属性,通常可以理解为其属名性时根据get和set方法名得出的。其规则是:去掉get或set后其剩余的字符串,如果第二个字母是小写的,则把第一个字母也变成小写getAge---->agegetCPU---->CPU而字段,通常叫做“类成员”。这两个概念是完全不同... 阅读全文

posted @ 2015-12-16 13:54 wzyxidian 阅读(424) 评论(0) 推荐(0) 编辑

2015年11月9日

Word Search

摘要: package cn.edu.xidian.sselab.array;/*** title: Word Search* content:*Given a 2D board and a word, find if the word exists in the grid.*The word can be... 阅读全文

posted @ 2015-11-09 23:22 wzyxidian 阅读(193) 评论(0) 推荐(0) 编辑

2015年11月4日

Rotate Array

摘要: package cn.edu.xidian.sselab.array;/*** title: Rotate Array* content:* Rotate an array of n elements to the right by k steps.* For example, with n = 7... 阅读全文

posted @ 2015-11-04 22:20 wzyxidian 阅读(182) 评论(0) 推荐(0) 编辑

Summary Ranges

摘要: package cn.edu.xidian.sselab.array;import java.util.ArrayList;import java.util.List;/*** title: Summary Ranges* content:* Given a sorted integer array... 阅读全文

posted @ 2015-11-04 22:18 wzyxidian 阅读(163) 评论(0) 推荐(0) 编辑

Plus One

摘要: package cn.edu.xidian.sselab.array;/*** title:Plus One* content:* iven a non-negative number represented as an array of digits, plus one to the number... 阅读全文

posted @ 2015-11-04 22:17 wzyxidian 阅读(212) 评论(0) 推荐(0) 编辑

Move Zeroes

摘要: package cn.edu.xidian.sselab.array;/*** titile:Move Zeroes* content:* Given an array nums, write a function to move all 0's to the end of it while mai... 阅读全文

posted @ 2015-11-04 22:16 wzyxidian 阅读(142) 评论(0) 推荐(0) 编辑

Valid Number

摘要: package cn.edu.xidian.sselab;/*** title:Valid Number* content:* Validate if a given string is numeric.* Some examples:* "0" => true* " 0.1 " => true* ... 阅读全文

posted @ 2015-11-04 22:15 wzyxidian 阅读(163) 评论(0) 推荐(0) 编辑

导航