
设计
弘石
山上有两个程序员
展开
-
设计模式-快餐简解-【代理模式】
【代理模式应用场景举例】 比如在玩“极品飞车”这款游戏,如果游戏者手中的金钱达到了一定的数量就可以到车店买一部性能更高的赛车,那么这个卖车的“车店”就是一个典型的“汽车厂家”的“代理”,他为汽车厂家“提供卖车的服务”给有需求的人士。从面向对象的方面考虑,“销售汽车的代理”也是一个对象,那么这个对象也具有一定的状态,在软件项目中这个对象也具有管理财务进销存的基本功能,那么在设计时就要以面向转载 2012-03-19 13:55:22 · 502 阅读 · 0 评论 -
系统架构设计师:浅谈架构
不得不说的就是规范性的东西,我认为规范是个很重要的东西,当然,规范不只是说大家统一用某种形式命名变量,方法等等,这只是对程序员而言的规范,如果这个划做横向规范的话,那么纵向规范就是面对客户的规范。对程序员的规范,我不想多说了,注释,变量,方法,文档。当然未必每个人都做到了这些。我想说的是对客户的规范问题。 对客户的规范有很多中,比如小细节CS系统中的Anchor怎么设置,Dock怎么设置,如转载 2012-06-21 10:57:25 · 1142 阅读 · 1 评论 -
代码大全——创建类的原因
创建类的原因如果你完全相信所读到的内容,你可能会得到这么一个概念,即认为创建类的唯一理由就是要为现实世界中的物体(object,对象)建模。而实际上,创建类的理由远远不止这一个。下面就列出一些创建类的合理原因:为现实世界中的对象建模 为现实世界中的对象建模也许不是创建类的唯一理由,但它仍是个很好的理由!请为你程序中需要建模的每一个出现在现实世界中的对象类型创建一个类。把该对象所需的数据添转载 2012-09-17 17:05:37 · 1566 阅读 · 0 评论 -
什么是基于B/S、c/s架构的系统设计
第一、什么是C/S结构。C/S(Client/Server)结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server应用转载 2012-06-21 11:03:26 · 40381 阅读 · 0 评论 -
S.O.L.I.D.类设计原则
本文是由敏捷宣言签署人之一、《 Clean Code(代码整洁之道)》一书的作者Robert C. Martin为他的《Applying Principles and Patterns》这本书搜集整理而来。单一责任原则(SRP)只有一个理由去修改一个类。例如,如果一个业务规则的改变会导致这个类的修改,那么,数据库、界面、报表格式或系统任何其它的部分的改变都不该迫使这个类做修改。ht转载 2012-09-27 13:46:05 · 2503 阅读 · 0 评论 -
你需要的不是重构,而是理清业务逻辑
首先说明我转这篇文章,不是因为这篇文章说得完全正确,而是对想做重构的人一个很有用的提醒,重构应该根据业务进行重构!================================================================================最近我遇到了一位以前公司的同事。他提到了数年前我在那个公司曾经开发过的项目。他说这个项目现在已经变成了“职业杀手”转载 2013-05-22 13:43:03 · 756 阅读 · 0 评论 -
桥接模式和策略模式的区别
学习的过程中发现这两个概念真的是有点区分不开,尽管可以很感性的说bridge模式要比strategy模式更复杂更具可塑性,更“高级”,但是如何清晰阐述两者区别,却实是有点困难。套用伟人的一句话,站在巨人的肩膀上看得更远,下边三段分别来自优快云论坛的贴子和一篇blogjava的文章,看了之后令我茅塞顿开,为表尊重不在冗述,直接贴原文了。实际上所有模式可以只分为类模式和对象模式两种,类模式是转载 2012-06-11 17:31:31 · 14723 阅读 · 5 评论 -
抽象工厂模式
本文来自:曹胜欢博客。http://blog.youkuaiyun.com/csh624366188/article/details/7462143==============================抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情转载 2012-05-17 18:02:51 · 891 阅读 · 0 评论 -
组合模式
组合模式一、引子在大学的数据结构这门课上,树是最重要的章节之一。还记得树是怎么定义的吗?树(Tree)是n(n≥0)个结点的有限集T,T 为空时称为空树,否则它满足如下两个条件:1) 有且仅有一个特定的称为根(Root)的结点;2) 其余的结点可分为m(m≥0)个互不相交的子集Tl,T2,…,Tm,其中每个子集本身又是一棵树,并称其为根的子树(SubTree)。上面给出的递归定义刻转载 2012-06-13 14:21:26 · 676 阅读 · 0 评论 -
java设计模式之一 桥接模式
本文介绍设计模式中的桥接(Bridge)模式的概念,用法,以及实际应用中怎么样使用桥接模式进行开发。Bridge模式的概念Bridge 模式是构造型的设计模式之一。Bridge模式基于类的最小设计原则,通过使用封装,聚合以及继承等行为来让不同的类承担不同的责任。它的主要特点是把抽象(abstraction)与行为实现(implementation)分离开来,从而可以保持各部分的独立性以及应转载 2012-06-11 18:00:38 · 1622 阅读 · 0 评论 -
状态模式(State Pattern)
原文地址:http://www.iteye.com/topic/503075状态(State Pattern)模式:又称为状态对象模式,状态模式是对象的行为模式状态模式允许一个对象在其内部状态改变的时候改变其行为,这个对象看上去就像是改变了它的类一样。模式所涉及的角色:1、抽象状态角色:定义一个接口,用以封装环境对象的一个特定的状态所对应的行为。2、具体状态角色:每一个具体转载 2012-05-21 16:50:50 · 685 阅读 · 0 评论 -
命令模式(Command Pattern)
命令模式(Command Pattern):命令模式属于对象的行为模式。命令模式又称为行动模式或交易模式。命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。命令模式是对命令的封装。命令模式把发出命令的责任和执行命令的责任分割开,委派给不同的对象。每一个命令都是一个操作:请求的一转载 2012-05-30 13:39:42 · 497 阅读 · 0 评论 -
设计模式-快餐简解-【观察者模式】
【观察者模式应用场景举例】 比如在玩“极品飞车”这款游戏,每一个车手到达终点的时候,都会在其它车手的屏幕上显示:某某人以多少时间到达终点的提示,其实这就是一个典型的观察者模式的应用,观察者模式即是典型的双向一对多的应用场景下用一的一端来通知多的一端。=============================================从另一篇文章中摘录的比较到位的说明:转载 2012-05-14 13:54:57 · 709 阅读 · 0 评论 -
设计模式-快餐简解-【原型模式】
【原型模式应用场景举例】 比如在玩“极品飞车”这款游戏,每个游戏者都有自己的账号用来标识玩家,而每个玩家都可以拥有相同的车辆,这样每个玩家都拥有相同的车,比如你的领居有奥迪A6,你的老婆对你说,我也要开和邻居一样的奥迪A6,好了,现在你们家也有奥迪A6了,你们每天开着自己的车去上班,那么在这种情况下就可以应用原型模式了,原型模式很简单哟:)就是类的copy复制。觉得上面的例子不太恰当转载 2012-05-09 10:58:19 · 735 阅读 · 0 评论 -
设计模式-快餐简解-【建造者模式】
【建造者模式应用场景举例】 比如在玩“极品飞车”这款游戏,那么每一关的地图会千变万化,简单的来说,地图会有晴天和阴天之分,那么创建地图时就要根据晴天或者阴天来对地图上的场景,比如:天空,树,房子,和路面进行渲染,这个过程是一个固定的,每创建一个新地图都要执行这几个渲染,这是针对高级配置的电脑来说的。 现在拥有低配置电脑的人不在少数,那么他们就不能玩游戏了吗?完全可以!只要将地图转载 2012-04-09 16:44:34 · 860 阅读 · 0 评论 -
设计模式-快餐简解-【装饰模式】
【装饰模式应用场景举例】 比如在玩“极品飞车”这款游戏,游戏中有对汽车进行喷涂鸦的功能,而且这个喷涂鸦是可以覆盖的,并且覆盖的顺序也影响到最后车身的显示效果,假设现在喷涂鸦具有2种样式:(1)红色火焰 (2)紫色霞光如果使用“继承父类”设计这样的功能,那么类图就像如下的这样: 从图中可以看到使用继承来实现这种功能,并且是2种涂鸦样式,就需要创建4个子类,如果喷涂鸦有3种,4转载 2012-03-19 13:51:32 · 513 阅读 · 0 评论 -
设计模式-快餐简解-【策略模式】
【策略模式应用场景举例】 比如在玩“极品飞车”这款游戏,那么游戏对车的轮胎是可以更换的,不同的轮胎在高速转弯时有不同的痕迹样式,那么针对“汽车”的配件“轮胎”就要可以变化,而且轮胎和轮胎之间是可以相互替换的,这就是典型的要应用“策略模式”的场景!从程序结构中可以看到,完全符合了前面我们的要求:“灵活”,“顺序敏感”。 【策略模式解释】 类型:行为模式 定义一转载 2012-03-19 14:00:26 · 749 阅读 · 0 评论 -
设计模式-快餐简解-【外观模式】
【外观模式应用场景举例】 比如在玩“极品飞车”这款游戏,你只需要等待的就是倒计时到0时以最快的车速冲到第一名,但游戏者根本没有想过在车冲出去之前要做哪些工作,比如挂档,离合器,油箱检测,调整方向等等的微操作,将这些微操作封装起来变成一个接口就是外观模式了。在WEB开发中的MVC分层架构就是典型的一个外观模式,每一层将操作的具体内容隐藏起来,保留一个接口供上层调用。 【外观模式解转载 2012-03-19 13:58:35 · 515 阅读 · 0 评论 -
实例讲解访问者模式(Visitor Pattern)
六个角色: 抽象访问者(Visitor)、具体访问者(ConcreteVisitor)、抽象元素(Element)、具体元素(ConcreteElement)、对象结构类(ObjectStructure)、客户端(Client) 抽象访问者(Visitor):抽象出访问元素的动作 具体访问者(ConcreteVisitor):实现访问元素的动转载 2015-08-21 14:54:15 · 3006 阅读 · 0 评论