随笔分类 - 面向对象设计模式
摘要:命令模式是行为形模式 耦合与变化 耦合是软件不能抵御变化灾难的根本性原因。不仅实体对象与实体对象之间存在耦合关系,实体对象与行为操作之间也存在耦合关系。 动机(Motivation) 在软件构建过程中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合--比如需要对行为进行“记录、撤
阅读全文
摘要:算法与对象的耦合: 对象可能经常需要使用多种不同的算法,但如果变化频繁,会将类型变得脆弱... 动机(Motivation) 在软件构建过程中,某些对象使用的算法可能多种多样,经常改变,如果将这些算法都编码到对象中,将会使对象变得异常复杂;而且有时候支持不使用的算法也是一个性能负担。 如何在运行时根
阅读全文
摘要:引入: 人们对于复杂的软件系统常常有一种处理手法,就是增加一层间接层,从而对系统获得一种更为灵活、满足特定需求的解决方案。 动机(Motivation) 在面向对象系统中,有些对象由于某种原因(比如创建对象的开销很大,或者某些操作需要安全控制,或者需要进程外的访问等),直接访问会给使用者、或者系统结
阅读全文
摘要:观察者模式是一种行为型模式是一种发布-订阅模型 动机(Motivation): 在软件构建过程中,我们需要为某些对象建立一种”通知依赖关系“--一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知。如果这样的依赖关系过于紧密,将使软件不能很好地抵御变化。 使用面向对象技术,可
阅读全文
摘要:new的问题: 常规的对一个象创建方法: // 创建一个Road对象 Road road = new Road(); new的问题: - 实现依赖,不能应对“具体实例化类型”的变化。 解决思路: -封装变化点——哪里变化,封装哪里 - 潜台词:如果没有变化, 当然不需要额外的封装 工厂模式的缘起 变
阅读全文
摘要:用下面的例子比较: using System; namespace LearnObject { public class LeiFeng { public void Sweep() { Console.WriteLine("扫地"); } public void Wash() { Console.W
阅读全文
摘要:工厂方法模式的优点: 在工厂方法模式中,工厂方法用来创建客户所需要的产品,同时还向客户隐藏了哪种具体产品类被实例化这一细节,用户只需要关心所需产品对应的工厂,无需关心创建细节,甚至无需知道具体产品类的类名。 基于工厂角色和产品角色的多态性设计是工厂方法模式的关键。它能够使工厂可以自主确定创建何种产品
阅读全文
摘要:简单工厂模式的不足 在简单工厂模式中,只提供了一个工厂类,该工厂类处于对产品类进行实例化的中心位置,它知道每个产品对象的创建细节,并决定何时实例化哪个产品类。简单工厂模式的最大的缺点是有当有新产品要加入系统中时,必须修改工厂类,加入必要的处理逻辑,这违背了”开闭原则“。在简单工厂模式中,所有的产品都
阅读全文
摘要:例子如下: public abstract class Product{ public string productName; } public abstract class ProductFactory{ public Product FactoryMethod(string producType
阅读全文
摘要:工厂方法模式缘起 耦合关系决定软件变化时的行为。 模块之间的紧耦合使用软件面对变化时,相关的模块都要随之更改。 而模块之间的松耦合使得软件面对变化时,一些模块更容易被替换或者更改,但其他模块保持不变。 工厂方法模式得动机 在软件系统中经常面临“某个对象”的创建工作,由于需求的变化,这个对象(具体实现
阅读全文
摘要:基本实现: public abstract class Product{ } public class ConcretProduct:Product{ } public class Factory{ public static Product CreateProduct(){ return new
阅读全文
摘要:工厂模式: 专门负责将大量有共同接口的类实例化,而且不必事先知道是要实例化哪个类的模式。 工厂模式有以下几种形态: 简单工厂(Simple Factory)模式 工厂方法模式(Factory Method)模式 抽象工厂模式(Abstract Factory) 根本思想是:对类的实例化进行封装。 角
阅读全文
摘要:创建型模式概述 创建型模式(Creational Pattern)对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离。为了使软件的结构更加清晰,外界对于这些对象只需要知道它们共同的接口,而不清楚具体的实现细节,使整个系统的设计更加符合单一职责原则。 创建型模式在创建什么(What
阅读全文
摘要:单例模式作为一种目标明确、结构简单、容易理解的设计模式,在软件开发中使用频率相当高,在很多游戏和框架中都得以广泛应用。 单例模式的优点如下: 1、单例模式提供了对唯一实例的受控访问。因为单例类封装了它的唯一实例,所以它可以严格控制客户怎样以及何时访问它。 2、由于系统内存中只存在一个对象,因此可以节
阅读全文
摘要:普通懒加载多线程单例 using System; public class Singleton<T> where T : class, new() { private static volatile T instance; private static readonly object syncRoo
阅读全文
摘要:例子: public class ParmeraSingleton { private static ParmeraSingleton instance = null; public int x, y; private ParmeraSingleton(int x, int y) { this.x
阅读全文
摘要:单例模式的定义如下: 单例模式(Singleton Pattern):确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类成为单例类,它提供全局访问的方法。单例模式是一种对象创建型模型。 单例模式的分类: 饿汉单例 懒汉单例 单线程单例 多线程单例 饿汉单例: public cl
阅读全文
摘要:UML(Unified Modeling Language,统一建模语言)是一种图形化的语言,它可以帮助我们在OOAD(面向对象的分析与设计)过程中标识元素,构建模块,分析过程并可通过文档说明系统中的重要细节。 面向对象发展的产物(20世纪80年代) 面向对象的建模语言(1994年50多种) 方法大
阅读全文
摘要:设计模式主要应用于面向对象软件设计领域,对于面向对象编程也有很好的指导意义。很多人都是通过对设计模式的学习和掌握才真正理解面向对象的。很多具有多年开发经验的Java或C#程序员,它们一直采用面向对象语言来从事软件开发,但是基本上还是按照传统的结构化编程方式,不理解抽象类和接口有什么作用,不明白什么时
阅读全文

浙公网安备 33010602011771号