好的设计的特点:高内聚、松耦合、封装、单一职责、可扩展、易读。这些设计的要求可以通过设计模式来解决。
设计模式只是为了达到良好设计的一个方法。按照敏捷的思想,简单设计是目标。不要臆想未来的可能而使用设计模式。当代码有坏味道,且当使用设计模式可以解决这些问题,那么使用设计模式;当需求的变化不满足目前设计要求或者使当前代码无法有良好的扩展性、松耦合、消除重复代码,那么使用设计模式。 在软件设计中不见得一定使用设计模式,不要为了使用设计模式而使用设计模式,所以设计模式是设计的核心就谈不上了。 设计的核心是解决实际问题,且使设计具有良好的松耦合、扩展性、共用代码,满足开闭原则等。
几位大师对使用设计模式的看法:
- 找出变化并封装之。
- 优先使用对象聚集,而不是类继承。
继承本身并没有错,但是人们在使用继承的时候,往往容易继承了 不该继承的方法,或者是继承的层次过多。继承是一种紧耦合。
1、Facade模式
Facade模式是对外界提供一个简洁的统一的接口,降低与外界的耦合度。
系统间或者包间的依赖尽可能少,外耦合内聚合是系统设计的原则。
领域驱动建模中,对系统的分层,dao层、领域层、服务层,其中的服务层其实就是facade层,是放置事务的合适位置,
领域层的粒度是比较小的,为达到更好的复用性,而在服务层可能会调用领域层的多个接口,而且多个接口可能构成一个业
务操作,构成一个事务。
2、代理模式与装饰模式
代理模式通常是对原有对象的控制,不会增加新的行为,比如说原来干什么还是干什么,常见的比如cglib加上事务机制,加上访问的控制但是没有增加新的行为,原有的服务未变。
但是装饰模式通常会加上新的行为,而且行为可以动态进行组合,可以有任意顺序,比如给墙刷颜色,先刷底色,再刷红色,再刷绿色,也可以先刷底色,再刷绿色,再刷红色。
代理模式和装饰模式都可以构造成在新类中引用对原有类,构成原有类的委托,这样就可以对原有类进行控制了,可以加新的行为,也可以加上其他控制。
代理模式也可以不构造成对原有接口的引用,比如采用动态代理,而装饰模式一般就是采用对原有接口的引用。
代理模式一般只对原有接口包装一次,而装饰模式可以对原有的接口包装多次
代理者和被代理者是聚合关系吗??聚合关系是整体和局部的关系,但是离开整体局部还可以生存,比如飞机场和飞机,代理模式两者关系,我觉得应该是依赖关系,更像是user-a关系
3、command模式
command模式很可能非常简单,很可能就是一个接口一个do方法,通常用于do或者undo场景。如果你认为应用场景中可以把一个动作封装起来,那么可以考虑使用命令模式。
public interface command{ void do(); }
但是其本质就是对动作或者请求的封装,对调用者和实现者解耦,比如说有很多开关,我们要对所有的开关执行开动作或者关的动作,调用者执行调用动作;而每个开关所要做的事情就是动作逻辑。调用动作通过一个do()或者undo方法可以使所有的开关执行开或者关动作。command模式通常会把动作和接受者绑定在一起,比如开的动作和灯绑定在一起
public class LightCommand {
private Light light;
public void open(){
this.light.open();
} 。。。。。}要有几个角色
(1)调用者
(2)命令本身
(3)接受者
命令模式封装了不同的任务或者动作的接受者,使得调用者和真正地执行者进行了解耦,也就是说,调用者可以动态替换command,或者调用者根本就不知道接收者是谁??就像一个按钮控制板,控制台灯,也控制电视,使用命令模式,接受者是电视、台灯分别实现了command的interface,控制面板点击某个按钮只需要注入不同的command就可以了。
3、策略模式与模板模式
策略模式是采用接口抽象算法,而模板模式是定义好算法的结构,采用继承。
4、状态模式与策略模式
策略模式与状态模式的结构很相似,但是状态模式的每个状态往往要引用一个context。
状态模式几个状态对某些动作或者几个事件的处理
未完 待续
分享到:
相关推荐
总结来说,李建忠先生的“设计模式总结”涵盖了C#中广泛使用的设计模式,强调了它们在实际项目中的应用价值。理解并熟练运用这些模式,对于提升C#开发者的专业素养和项目质量具有重大意义。无论是初学者还是经验丰富...
本篇文章将对一系列重要的C#面向对象设计模式进行总结,帮助开发者更好地理解和应用这些模式。 1. 工厂模式:工厂模式是一种创建型设计模式,提供了一种创建对象的最佳方式,通过抽象工厂接口,避免了代码与具体类...
设计模式总结,对23种经典模式的分类,各自的使用方法,优缺点进行详细的描述。
大话设计模式总结.pdf大话设计模式总结.pdf大话设计模式总结.pdf大话设计模式总结.pdf大话设计模式总结.pdf
本总结文档涵盖了所有的设计模式,并对常用的模式进行了详细解释,非常适合程序员在面试前快速复习以及日常学习使用。 文档中提到的六大设计原则,包括单一职责原则、里氏替换原则、接口隔离原则、迪米特法则、开闭...
这里主要针对标题“Java设计模式总结”以及描述中提及的资源进行深入阐述。 1. **设计模式的概念**: 设计模式并非具体的代码或库,而是一种在特定上下文中解决常见问题的模板。它们描述了如何在面向对象设计中以...
在《23种设计模式总结及案例》中,通常会涵盖以下主要的设计模式类型: 1. 创建型模式:这类模式主要关注对象的创建过程,使得系统在不指定具体类的情况下创建对象,提高代码的灵活性。包括单例模式(Singleton)、...
设计模式总结主要包括创建型、结构型和行为型这三大类,每类模式都有其特定的应用场景和目标。 1. 创建型模式(创建对象的模式) - 工厂方法模式:允许将对象的创建过程推迟到子类中,使得代码更具可扩展性和灵活...
设计模式是软件开发中的一种最佳实践,它是在特定上下文中解决常见问题的模板或蓝图,可以被反复使用,以提高代码的可读性、可维护性和灵活性。在Java编程中,23种经典的设计模式被广泛认可并应用,这些模式分为三大...
设计模式总结 设计模式是软件设计中的一种重要概念,它们是经过实践和经验总结出的优秀设计解决方案。设计模式的应用可以使软件设计更加灵活、可维护、可扩展和可重用。本文档对设计模式进行了总结和归纳,主要包括...
### 设计模式总结篇 #### 引言 在软件开发领域,设计模式作为一种重要的方法论,对于提升软件质量、增强代码可维护性和可扩展性具有不可替代的作用。本文旨在总结和探讨设计模式的相关知识,包括架构设计原则、...
Spring设计模式总结 在软件开发中,设计模式是解决常见问题的经验总结,它们为程序员提供了在特定场景下设计高效、可维护代码的蓝图。在Spring框架中,许多设计模式被广泛应用,以提升系统的灵活性和可扩展性。以下...
《.Net 面向对象及设计模式总结》是一份深度涵盖.Net开发中面向对象编程原理和设计模式的宝贵资料,特别适合初学者巩固基础知识,以及有经验的开发者进行复习和提升。通过阅读这些笔记,我们可以深入理解面向对象的...
自己根据老师的课件的和讲解,总结的关于程序设计模式的知识,拿出来和大家分享一下,希望能帮到和我一样,在学设计模式时遇到困难的同学。
### 设计模式总结:模板设计模式与单例模式 #### 模板设计模式 模板设计模式是一种行为型设计模式,它定义了一个算法的骨架,并允许子类为算法的某些步骤提供具体的实现。通过这种方式,算法的基本流程保持不变,...
"设计模式总结-java与模式清晰版"这个标题表明我们即将探讨的是关于Java编程语言中的设计模式,旨在帮助开发者更好地理解和应用这些模式。这篇博文链接(https://410063005.iteye.com/blog/1680031)可能提供了详细...
设计模式总结 设计模式是软件设计中的一种解决方案,旨在解决软件设计中的一些常见问题。以下是设计模式的总结,涵盖了多种设计模式的概念、特点和应用场景。 一、类图备注 * +public:公共成员变量或方法 * -...
设计模式总结 设计模式是软件开发中的一种解决方案,它提供了一种通用的解决方案来解决常见的软件设计问题。设计模式可以分为三大类:创建型模式、结构型模式和行为型模式。 创建型模式(Creational Patterns) *...
java23种设计模式总结 . 设计模式 1.1 创建型模式 1.1.1 工厂方法 1.1.2 抽象工厂 1.1.3 建造者模式 .. 1.1.4 单态模式 .. 1.1.5 原型模式 . 1.2 结构型模式 ... 1.2.1 适配器模式 1.2.2 桥接模式 ........