
设计模式
星际行走
这个作者很懒,什么都没留下…
展开
-
中介者模式
内容摘录自《大话设计模式》尽管将一个系统分割成许多对象通常可以增加其可复用性,但是对象间相互连接的激增又会降低其可复用性。因为大量的连接使得一个对象不可能在没有其他对象的支持下工作,系统表现为一个不可分割的征途,所以,对系统的行为进行任何较大的改动就十分困难了。如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的话,可以通过...原创 2019-11-21 14:52:06 · 207 阅读 · 0 评论 -
备忘录模式
内容摘录自《大话设计模式》游戏存进度游戏角色类,用来存储角色的生命力、攻击力、防御力的数据public class GameRole{ // 生命力 private int vit; public int Vit { get { return vit; } set { vit = value; } } // 攻击力 ...原创 2019-11-19 15:06:41 · 143 阅读 · 0 评论 -
适配器模式
内容摘录自《大话设计模式》适配器模式适配器模式(Adapter),将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。简单地说,就是需要的东西就在面前,但却不能使用,而短时间内又无法改造它,于是我们就想办法适配它。示例1:电源适配器。有些国家用110V电压,而我们国家用的是220V,但我们的电器,比如笔记本电脑是不能...原创 2019-11-14 14:26:13 · 158 阅读 · 0 评论 -
状态模式
内容摘录自《大话设计模式》根据时间不同,呈现不同工作状态下的行为工作状态-分类版工作类public class Work{ private int hour; public int Hour { get { return hour; } set { hour = value; } } private ...原创 2019-11-13 15:18:40 · 118 阅读 · 0 评论 -
抽象工厂模式 与 反射
内容摘录自《大话设计模式》需求:已开发好的项目,电子商务网站,是用SQL Server作为数据库的。现在接到另一家公司的类似需求的项目,只能用Access,于是需要改造原来项目的代码。而实际上,SQL Server和Access的命名空间,使用的函数,关键字等都存在不同之处。最基本的数据访问程序用户类,假设只有ID和Name两个字段,其余省略。//数据表用户类...原创 2019-11-08 15:05:43 · 534 阅读 · 0 评论 -
建造者模式
摘录自《大话设计模式》建造者模式建造者模式(Builder),将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。什么时候使用建造者模式?主要是用于创建一些复杂的对象,这些对象内部构建间的建造顺序通常是稳定的,但对象内部的构建通常面临着复杂的变化。建造者模式的好处就是使得建造代码和表示代码分离,由于建造者隐藏了该产品是如何组装的,所以若需要...原创 2019-11-05 15:01:47 · 99 阅读 · 0 评论 -
外观模式(Facade)
摘录自《大话设计模式》外观模式外观模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。四个子系统的类public class SubSystemOne{ public void MethodOne() { Debug.Log("子系统方法一"); }...原创 2019-11-04 14:03:39 · 155 阅读 · 0 评论 -
模板方法模式
摘录自《大话设计模式》第一版代码:试卷父类代码学生类代码客户端代码仔细看看,两个学生的类里面还是存在相同的东西。比如都有‘base.TestQuestion()’,还有‘Console.WriteLine(" 答案:")’,除了选项的abcd,其他都是重复的。既然用了继承,并且肯定这个继承有意义,就应该要成为子类的模板,所有重复的代码都应该要上升到父类去,...原创 2019-11-01 16:14:05 · 122 阅读 · 0 评论 -
工厂方法模式
内容摘录自《大话设计模式》简单工厂模式实现计算器的简单工厂模式实现的结构图:具体的运算类在简单工厂模式一文里面工厂方法模式实现计算器的工厂方法模式实现的结构图:1、先构建一个工程接口 // 工厂接口public interface IFactory{ Operation CreateOperation();}2、然后...原创 2019-10-31 14:46:21 · 102 阅读 · 0 评论 -
单一职责、开放-封闭、依赖倒转原则
内容摘录自《大话设计模式》单一职责原则单一职责原则,就一个类而言,应该仅有一个引起它变化的原因如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。例如,界面与游戏逻辑就应该进行分离,当要改变界面时,不过是窗体类的变化,和游戏逻辑无关,以此达到复用的目...原创 2019-10-29 15:31:25 · 266 阅读 · 0 评论 -
简单工厂模式
简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式。简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。具体实现如下:1、定义一个基类与具体的操作类// 运算基类public class Operation{ private double _numberA =...原创 2019-10-28 15:51:21 · 98 阅读 · 0 评论 -
观察者模式 与 Unity的事件通知
部分内容摘录自程杰的《大化设计模式》观察者模式观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己事件委托说明委托就是一种引用方法的类型。一旦为委托分配了方法,委托将与该方法具有完全相同的行为。委托方法的使用可以像其他任何方法一样,具有参数和返回值。一个委托可以...原创 2019-10-25 16:07:20 · 597 阅读 · 0 评论 -
C#单例类的泛型,相当于C++的类模板
public class SingletonNoMono<T> where T : new(){ private static T instance; private static readonly object lockObject = new object(); public static T Instance { get ...原创 2018-09-18 16:51:01 · 659 阅读 · 0 评论 -
单例模式
内容摘录自程杰的《大话设计模式》单例模式单例模式(Singleton),保证一个类仅有一个实例,并提供一个访问它的全局方法。所有类都有构造方法,不编码则系统默认生成空的构造方法,若有显示定义的构造方法,默认的构造方法就会失效。所以将单例类的构造方法写成private的,外部程序就不能用new来实例化它了。然后我们在单例类中通过public方法GetInstance(),来返回...原创 2019-10-22 14:55:18 · 93 阅读 · 0 评论