随笔分类 -  Design patter

DRY原则和Shy原则
摘要:前言保障可维护性的主要诀窍是 遵循DRY原则和Shy原则。在一个系统的整个生命周期里,理解和改动这类维护工作的比例一般非常之高。为了维护的方便,要尽量将系统划分为可以独立理解与改动的模块。这就要在设计的 时候注重DRY原则与Shy原则。不过,这两条原则有一定的冲突,并不总能兼得,于是在追求的时候要重视分寸。维护者的两大困扰有两种情况会给维护者增添很大的麻烦:一种是为了调整一个效果,要改动无数个地方;一种是只改动了一个地方,却影响了很多效果。在前一种情况下,非常容易出现漏改的问题——因为需要改动的地方太多,有些应该改动的地方没有改动;在后一种情况下,非常容易出现误改的情况——因为被影响的效果太多 阅读全文
posted @ 2014-01-15 13:38 smallerpig 阅读(204) 评论(0) 推荐(0)
小猪学设计模式之—装饰者模式
摘要:装饰者模式动态地给一个对象添加一些额外的职责,就增加功能来说,Decorator模式比生成子类更为灵活。装饰者模式的工作原理:可以创建始于Decorator对象(负责新的功能的对象)终于原对象的一个对象“链”。A=>装饰=>B=>装饰=>C=>装饰=>D=>装饰=>实体装饰者模式隐含的是通过一条条装饰链去实现具体对象,每一条装饰链都始于一个Componet对象,每个装饰者对象后面紧跟着另一个装饰者对象,而对象链终于ConcreteComponet对象。 装饰者模式UML图 ConcreteComponent:让Decorator对象为自己添加功能 阅读全文
posted @ 2013-10-09 17:16 smallerpig 阅读(193) 评论(0) 推荐(0)
设计原则—依赖倒转原则
摘要:定义1:高层模块不应该依赖低层模块,两者都应该依赖其抽象;2:抽象不应该依赖细节;3:细节应该依赖抽象。更加精简的定义就是“面向接口编程”——OOD(Object-Oriented Design,面向对象设计)的精髓之一。为什么要倒转? 原因:面向过程的开发时,为了使常用代码可以复用,一般都会把这些常用代码写成许多函数的程序库,这样我们在做新项目的时候,去调用这些底层的函数就可以了,比如,我们做的项目大多需要访问数据库,所以就把访问数据库的代码写成了函数,这也叫做高层模块依赖底层模块,但问题也就出在这里,我们要做新的项目,发现业务逻辑的高层模块都是一样的,但客户端希望使用不同的数据库或存储信息 阅读全文
posted @ 2013-10-09 14:40 smallerpig 阅读(141) 评论(0) 推荐(0)
面向对象编程(OOP)基础之UML基础
摘要:在我们学习OOP过程中,难免会见到一些结构图~各种小框框、各种箭头。今天小猪就来简单介绍一下这些框框箭头的意思——UML。UML定义的关系主要有:泛化(继承)、实现、依赖、关联、聚合、组合,这六种关系紧密程度依次加强,下面分别来看一下泛化(继承)概念:泛化是一种一般与特殊、一般与具体之间关系的描述,具体描述建立在一般描述的基础之上,并对其进行了扩展。在程序中是通过继承类实现的。比如狗是对动物的具体描述,在面向对象设计的时候一般把狗设计为动物的子类。表示方法:空心三角形箭头的实线,子类指向父类实现概念:实现是一种类与接口的关系,表示类是接口所有特征和行为的实现,在程序中一般通过类实现接口来描述表 阅读全文
posted @ 2013-09-15 16:29 smallerpig 阅读(301) 评论(0) 推荐(0)
小猪学设计模式——门面模式(外观模式)
摘要:前言在学习这个模式的时候小猪有这样的感觉:我们很多时候会把设计模式想的多么高深,多么的深不可测,新手完全看不懂之类的话,其实只要我们把面向对象基础打好,在写代码的时候会不自不觉的用到一些设计模式,只是我们不知道它叫什么名字而已。模式定义外观模式(Facade),为子系统中的一组接口提供了一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 实现代码代码清单一:子系统的类class SubSystemOne{ public void MethodOne() { Console.WriteLine(" 子系统方法一"); }} cla... 阅读全文
posted @ 2013-09-13 13:36 smallerpig 阅读(190) 评论(0) 推荐(0)
小猪学设计模式——模板方法模式
摘要:前言在小猪之前写的代码中有这样的功能:在需要验证的页面中加入逻辑的验证public void page_load(obeject sender, event e){ if(Session["admin"]==null||Session["admin"]=="") { //跳转到登陆页 } //继续操作}而在每个页面中都需要加入这样的逻辑判断来验证用户是否登陆。同样在ASP.NET MVC里面需要在每个Action里面加入这样的判断。而后来小猪写了多了就发现不应该在每个页面里面都写上这样同样的代码,可以写在一个基类里面然后需要验证的时候 阅读全文
posted @ 2013-09-12 20:42 smallerpig 阅读(179) 评论(0) 推荐(0)
小猪学设计模式——工厂模式之抽象工厂
摘要:这篇是工厂模式系列的最后一篇 阅读全文
posted @ 2013-09-12 10:36 smallerpig 阅读(137) 评论(0) 推荐(0)
小猪学设计模式——工厂模式之工厂方法模式
摘要:小猪学设计模式——工厂模式之工厂模式前一篇是简单工厂模式,因其存在固定缺陷于是出现了 阅读全文
posted @ 2013-09-12 10:35 smallerpig 阅读(178) 评论(1) 推荐(0)
小猪学设计模式——工厂模式之简单工厂(静态工厂)
摘要:前言在我们写代码过程中,经常使用类似这样的代码ClassA a = new ClassA();严格意义上来讲这段代码已经依赖具体的实现了。当使用"new"关键字创建一个对象时,此时该类就依赖与这个对象,也就是他们之间的耦合度高,当需求变化时,我们就不得不去修改此类的源码。这违反了编程的原则里的“依赖抽象”“开放—关闭”等等一系列原则。简单工厂此时我们可以运用面向对象(OO)的很重要的原则去解决这一的问题,该原则就是——封装改变。针对接口编程,可以隔离掉以后系统可能发生的一大堆改变。入股代码是针对接口而写,那么可以通过多态,它可以与任何新类实现该接口。但是,当代码使用一大堆的 阅读全文
posted @ 2013-09-12 10:32 smallerpig 阅读(246) 评论(0) 推荐(0)
小猪学设计模式之——单例模式
摘要:小猪使用单例模式作为这个系列的开始篇,不仅是因为小猪觉得单例模式是所有的设计模式系列中最简单的一种,而且是很多时候我们已经在不知不觉中使用之了。 在很多场景中我们都会希望某个变量,或者是某一个类在程序的整个过程中都只有一个,不同地方用到的实际上都是一个实例,这个需求如何实现呢? 在任何一本入门书中,作者几乎都会讲到一个关键词——static:静态的,其实小猪之前很长一段时间一直以为单例模式就是用这个static关键词加上final关键词申明一个变量,于是乎这个变量就是单例的,所以这个就叫单例模式。 但是…… 单例模式应该是这个的,在单例模式的类中 1,该类只有一个实例2,该类自行创... 阅读全文
posted @ 2013-05-26 23:42 smallerpig 阅读(230) 评论(0) 推荐(0)