C# Socket的Send问题,阻塞线程
摘要:Socket sc = comm.connectSocket(ip, port, ReceiveMsg_fromPc); comm.sendSocketMsg16(sc,cmd); sc.Close(); public static Socket connectSocket(string ip, int port, ReceiveSocketMsg receiveMsg) { ...
阅读全文
posted @
2019-01-14 21:52
一粒沙
阅读(2049)
推荐(0)
对面向对象设计原则的总结
摘要:正如牛顿三大定律在经典力学中的位置一样,“开-闭”原则(Open-Closed Principle)是面向对象的可复用设计(Object Oriented Design或OOD)的基石。其他设计原则(里氏代换原则、依赖倒转原则、合成/聚合复用原则、迪米特法则、接口隔离原则)是实现“开-闭”原则的手段和工具。 一、“开-闭”原则(Open-Closed Principle,OCP) 1.1“开-闭...
阅读全文
posted @
2010-09-28 16:12
一粒沙
阅读(280)
推荐(0)
面向对象之代码复用规则
摘要:代码复用是绝大多数程序员所期望的,也是OO的目标之一。总结我多年的编码经验,为了使代码能够最大程度上复用,应该特别注意以下几个方面。1、 对接口编程 "对接口编程"是面向对象设计(OOD)的第一个基本原则。它的含义是:使用接口和同类型的组件通讯,即,对于所有完成相同功能的组件,应该抽象出一个接口,它们都实现该接口。具体到JAVA中,可以是接口(interface),或者是抽象类(abstract ...
阅读全文
posted @
2010-05-19 10:06
一粒沙
阅读(1077)
推荐(1)
Façade外观(结构型模式)
摘要:系统的复杂度 假设我们需要开发一个坦克模拟系统用于模拟坦克车在各种作战环境中的行为,其中坦克系统由引擎、控制器、车轮、车身等各子系统构成。public class Wheel{public void WAction1() {....}public void WAction2() {....}}public class Engine{public void EAction1() {....}publ...
阅读全文
posted @
2009-12-20 21:03
一粒沙
阅读(689)
推荐(0)
Decorator 装饰(结构型模式)
摘要:子类复子类,子类何其多 假如我们需要为游戏中开发一种坦克,除了各种不同型号的坦克外,我们还希望在不同场合中为其增加以下一种或多种功能:比如红外线夜视功能,比如水陆两栖功能,比如卫星定位功能等等。// 抽象坦克public abstract class Tank {public abstract Shot();public abstract Run();}//各种型号public class T50...
阅读全文
posted @
2009-12-18 23:18
一粒沙
阅读(246)
推荐(0)
Composite 组合(结构型模式)
摘要:对象容器的问题在面向对象系统中,我们常会遇到一类具有“容器”特征的对象——即它们在充当对象的同时,又是其他对象的容器。 [代码]如果我们要对这样的对象容器进行处理: [代码] 动机(Motivation) 上述描述的问题根源在于:客户代码过多地依赖于对象容器复杂的内部实现结构,对象容器内部实现结构(而非抽象接口)的变化将引起客户代码的频繁变化,带来了...
阅读全文
posted @
2009-12-17 23:20
一粒沙
阅读(366)
推荐(0)
Bridge 桥接(结构型模式)
摘要:抽象与实现 抽象不应该依赖于实现细节,实现细节应该依赖于抽象。 抽象B ——稳定 实现细节b ——变化 问题在于如果抽象B由于固有的原因,本身并不稳定,也有可能变化,怎么办? 举例来说 假如我们需要开发一个同时支持PC和手机的坦克游戏,游戏在PC和手机上功能都一样,都有同样的类型,面临同样的功能需求变化,比如坦克可能有多种不同的型号:T50,T7...
阅读全文
posted @
2009-12-16 22:26
一粒沙
阅读(455)
推荐(0)
Adapter 适配器(结构型模式)
摘要:适配(转换)的概念无处不在…… 适配,即在不改变原有实现的基础上,将原先不兼容的接口转换为兼容的接口。 动机(Motivation) 在软件系统中,由于应用环境的变化, 常常需要将“一些现存的对象”放在新的环境中应用,但是新环境要求的接口是这些现存对象所不满足的。 如何应对这种“迁移的变化”?如何既能利用现有对象的良好实现,同...
阅读全文
posted @
2009-12-16 14:00
一粒沙
阅读(342)
推荐(0)
Prototype 原型(创建型模式)
摘要:依赖关系的倒置抽象不应该依赖于实现细节,实现细节应该依赖于抽象。– 抽象A直接依赖于实现细节b –抽象A依赖于抽象B,实现细节b依赖于抽象B 动机(Motivation) 在软件系统中,经常面临着“某些结构复杂的对象”的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是它们却拥有比较稳定一致的接口。 如何应对这种变化?如何向“...
阅读全文
posted @
2009-12-14 22:32
一粒沙
阅读(231)
推荐(0)
Factory Method 工厂方法
摘要:从耦合关系谈起 耦合关系直接决定着软件面对变化时的行为 – 模块与模块之间的紧耦合使得软件面对变化时,相关的模块都要随之更改 – 模块与模块之间的松耦合使得软件面对变化时,一些模块更容易被替换或者更改,但其他模块保持不变动机(Motivation) 在软件系统中,经常面临着“某个对象”的创建工作;由于需求的变化,这个对象经常面临着剧烈的变化,但是它却...
阅读全文
posted @
2009-12-13 23:39
一粒沙
阅读(341)
推荐(0)
Builder 生成器模式(创建型模式)
摘要:Builder模式的缘起假设创建游戏中的一个房屋House设施,该房屋的构建由几个部分组成,且各个部分要富于变化。如果使用最直观的设计方法,每一个房屋部分的变化,都将导致房屋构建的重新修正……动机(Motivation)在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部...
阅读全文
posted @
2009-12-12 22:18
一粒沙
阅读(418)
推荐(0)
抽象工厂Abstract Factory
摘要:动机(Motivation) 在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作;同时,由于需求的变化,往往存在更多系列对象的创建工作。 如何应对这种变化?如何绕过常规的对象创建方法(new),提供一种“封装机制”来避免客户程序和这种“多系列具体对象创建工作”的紧耦合? 意图(Intent) 提供一个接口,让该接口负责创建一系列“相关或者相互依赖的对象”,无需指定它们具体的类。——《设计模...
阅读全文
posted @
2009-12-11 22:26
一粒沙
阅读(282)
推荐(0)
简单工厂模式
摘要:工厂模式专门负责将大量有共同接口的类实例化。工厂模式可以动态决定将哪一个类实例化,不必事先知道每次要实例化哪一个类。工厂模式有以下几种形态: 简单工厂(Simple Factory)模式工厂方法(Factory Method)模式抽象工厂(Abstract Factory)模式 工厂类角色Creator (LightSimpleFactory):工厂类在客户端的直接控制下(Create方法)创建产...
阅读全文
posted @
2009-12-11 21:47
一粒沙
阅读(246)
推荐(0)
2. Singleton单件(创建型模式)
摘要:模式分类从目的来看:– 创建型(Creational)模式:负责对象创建。– 结构型(Structural)模式:处理类与对象间的组合。– 行为型(Behavioral)模式:类与对象交互中的职责分配。从范围来看:– 类模式处理类与子类的静态关系。– 对象模式处理对象间的动态关系。 动机(Motivation)在软件系统中,经常有这样一些...
阅读全文
posted @
2009-12-08 20:36
一粒沙
阅读(258)
推荐(0)
面向对象设计模式与原则
摘要:本系列内容引用微软WebCast的“C#面向对象设计模式纵横谈”,讲师:李建忠 设计模式简介 每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。——Christopher Alexander 设计模式描述了软件设计过程中某一类常见问题的一般性的解决方案。 面向对象设计模式描述了面向对象设计过程中、特定场景下、类与相互通信的对象之间常见的组织关系。 GoF 23 ...
阅读全文
posted @
2009-12-08 20:15
一粒沙
阅读(279)
推荐(0)