Billpeng Space

技术源自生活
随笔 - 273, 文章 - 0, 评论 - 97, 阅读 - 60万
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

随笔分类 -  设计模式

摘要:聚合根到聚合根:通过ID关联;聚合根到其内部的实体,直接引用;聚合根到值对象,直接引用;实体到聚合根: 通过ID关联;实体到其聚合的聚合根:1对1ID关联,1对多可直接引用;实体到其聚合内的实体:直接引用,但不要循环引用;实体到其聚合外的实体:不可能有这种情况,因为实体都是在聚合内部的,对外不可见;实体到任何值对象:直接引用;值对象到聚合根: 通过ID关联;值对象到实体:直接引用;值对象到值对象:直接引用; 阅读全文

posted @ 2013-05-01 03:00 billpeng 阅读(676) 评论(0) 推荐(0) 编辑

摘要:思考ValueObject应该更多从内存的角度思考,而非DB持久化的角度。例如: public class A { public int Id { get; set; } public Address A_Address { get; set; } } public class B { public int Id { get; set; } public Address B_Address { get; set; } } public class Address { publi... 阅读全文

posted @ 2013-04-30 17:18 billpeng 阅读(2913) 评论(0) 推荐(1) 编辑

摘要:领域中的分层模式(LAYERED ARCHITECTURE)依次分为用户界面层,应用层,领域层,基础设施层 各层主要任务用户界面层:想用户显示信息和解释用户指令。应用层:定义软件要完成的任务,并指挥表达领域概念的对象来解决问题。应用层应尽量简单,不包含业务规则或知识,而只是为下一层中的领域对象协调任务,分配工作,屎他们相互合作。他没有反映业务情况的状态,但是却可以具有另外一种状态,为用户或程序显示某个任务的进度。领域层(模型层) :负责表达业务概念,业务状态信息以及业务规则。尽管保存业务状态的技术细节是由基础设施层实现,但是反映业务情况的状态是由本曾控制并使用的。此层是软件的核心。基础设施层: 阅读全文

posted @ 2012-10-03 04:49 billpeng 阅读(349) 评论(0) 推荐(0) 编辑

摘要:1,状态模式允许一个"对象"在其内部状态改变的时候改变其行为。2,状态模式的角色:抽象状态,具体状态(一般是几个,每一个状态下有不同的行为,),环境(context)角色(就是对象,什么对象的状态,一般该对象要初始化一个状态,还有改变状态,还有该状态下的行为)我们打篮球的时候运动员可以有正常状态,不正常状态,和超常状态,现在我们就以我们打篮球时候投篮时候的状态来举例子,首先我们抽象出状态,以及该状态下的行为,interface State{ public void shot();}然后实现具体状态,我们这里有三个,三种状态三种行为。不正常public class Nonor 阅读全文

posted @ 2011-09-15 00:05 billpeng 阅读(397) 评论(0) 推荐(0) 编辑

摘要:策略模式 把易于变化的行为分别封装起来,让它们之间可以互相替换, 让这些行为的变化独立于拥有这些行为的客户。 GoF《设计模式》中说道:定义一系列算法,把它们一个个封装起来,并且使它们可以相互替换。该模式使得算法可独立于它们的客户变化。Command命令模式是一种对象行为型模式,它主要解决的问题是:在软件构建过程中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”的问题。 GoF《设计模式》中说道:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。我个人觉得,策略模式和命令模式的其中一个最大区别,是在于:策略模式... 阅读全文

posted @ 2011-09-12 10:55 billpeng 阅读(1121) 评论(0) 推荐(0) 编辑

摘要:简单工厂 理解:简单工厂模式的工厂类一般是使用静态方法,通过接收的参数不同来返回不同的对象的实例,不修改代码的话,是无法扩展的。 先定义产品类,它们需要实现同一接口或继承自同一抽象类。//产品接口(或抽象类)publicinterfaceIClassDo{voiddoSomething();}publicclassClass1:IClassDo{publicvoiddoSomething(){Console.WriteLine("class1");}}publicclassClass2:IClassDo{publicvoiddoSomething(){Console.Wri 阅读全文

posted @ 2011-09-12 02:51 billpeng 阅读(325) 评论(0) 推荐(0) 编辑

摘要:对于简单工厂来说,它的工厂只能是这个样子的 publicclassSimplyFactory{ /** *静态工厂方法 */ publicstaticProuctfactory(Stringwhich)throwNoSuchProductExcption { if(which.equalIgnoreCase("product1")) { returnnewProduct1(); } elseif(which.equalsIgnoreCase("product2")) { returnnewProduct2(); } elseif(which.equals 阅读全文

posted @ 2011-09-12 00:36 billpeng 阅读(225) 评论(0) 推荐(0) 编辑

摘要:《大话设计模式》连续三章讲述了三个原则,把这些重要语录摘抄下来,供我日后好好理解。单一职责原则(Simple Response Principle):就一个类而言,应该仅有一个引起他变化的原因。当一个类承担了过多的职责,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其它职责的能力。这种耦合会导致脆弱的设计,当设计变化时,设计会遭受到意想不到的破坏。软件设计真正要做的事,就是发现职责,并把这些职责相互分离。判断是否职责单一的方法:如果你想到多于一个动机去改变一个类,这个类就具有多于一个的职责,就应该对类进行职责分离。开放-封闭原则:软件实体(类,模块,函数等),应... 阅读全文

posted @ 2011-09-05 17:46 billpeng 阅读(449) 评论(0) 推荐(0) 编辑

摘要:在没有好好地研习面向对象设计的设计模式之前,我对Java接口和Java抽象类的认识还是很模糊,很不可理解。刚学Java语言时,就很难理解为什么要有接口这个概念,虽说是可以实现所谓的多继承,可一个只有方法名,没有方法体的东西,我实现它又有什么用呢?我从它那什么也得不到,除了一些方法名,我直接在具体类里加入这些方法不就行了吗?为什么一定要有抽象类这个概念?为什么就不能把这个父类写成一个具体的类,子类再继承它不就可以了吗?何必弄一个抽象类出来,还要弄一些没有方法体的抽象方法,弄得又象接口又象类的,让人捉摸不定。当我开始学习java设计模式,真正走进面向对象设计的大门之后,我才发现,自己对面向对象设计 阅读全文

posted @ 2011-09-05 15:09 billpeng 阅读(293) 评论(0) 推荐(0) 编辑

摘要:1) 开放-封闭原则 (The Open-Close Principle,简称OCP) (另一个例子) 2) 单一职责原则 (The Single Responsiblity Principle,简称SRP) 3) 里氏替换原则(The Liskov Substitution Principle,简称LSP) 4) 依赖倒置原则(The Dependency Inversion Pricinple,简称DIP) 5) 接口隔离原则 (The Interface Segregation Princ... 阅读全文

posted @ 2011-09-05 12:14 billpeng 阅读(492) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示