
设计模式
设计模式学习笔记
牛神自
好好学习,天天向上...
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
设计模式---中介者模式---18
优点:中介者的出现减少了各个对象的耦合,使得可以独立地改变和复用各个对象和中介者,其次,由于把对象如何协作进行了抽象,将中介作为一个独立的概念并将其封装在一个对象中,这样关注的对象就从对象各自本身的行为转移到它们之间的交互上来,也就是站在一个更宏观的角度去看待系统。缺点:由于中介者控制力集中化,于是就把交互复杂性变为了中介者的复杂性,这就使得中介者会变得比任何一个Collegue都复杂。...原创 2022-01-24 17:30:36 · 207 阅读 · 0 评论 -
设计模式---职责链模式---17
职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象练成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。多个对象的行为一致,只是权限不同,可以用这个模式。//处理请求的接口public abstract class Handler{ protected Handler successor; public void SetSuccessor(Handler successor) { this.success原创 2022-01-24 16:43:31 · 141 阅读 · 0 评论 -
设计模式---命令模式---16
命令模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录日志请求,以及支持可撤销的操作。封装的是方法:再通俗一点就是,不要直接调用,在中间加一层调用,类似代理优点:第一,它能较容易设计一个命令队列。第二,在需要的情况下,可以较容易地将命令记入日志。第三,允许接受请求的一方决定是否要否决请求。第四,可以容易地实现对请求的撤销和重做。第五,由于加进新的具体命令类不影响其他的类,因此增加新的具体命令类很容易。敏捷开发原则告诉我们,不要为代码添加基于猜测的、实际原创 2022-01-24 15:48:54 · 321 阅读 · 0 评论 -
设计模式---桥接模式---15
桥接模式:将抽象部分与它的实现部分分离,使它们都可以独立地变换。实现系统可能有多角度分类,每一种分类都有可能变化,那么就把这种多角度分离出来让它们独立变化,减少它们之间的耦合。//抽象部分public class Graphic{ public Color color; public Shape shape;}//实现部分接口public class Color{ public string color;}//实现部分接口public class Shap原创 2022-01-24 14:16:53 · 227 阅读 · 0 评论 -
设计模式---单例模式---14
单例就不多说了!1.饿汉模式public sealed class Singleton{ private static Singleton instance = new Singleton(); private Singleton() { } public static Singleton Instance { get { return instance; } }}2.懒汉模式public sealed class Singleton原创 2022-01-24 11:37:53 · 2598 阅读 · 0 评论 -
设计模式---备忘录模式---13
//发起人:可以理解需要保持数据的类(也可以是个中介、代理类)public class Orginator{ private string state; public string State { get { return state; } set { state = value; } }}//备忘录类:只能由发起人设置数据,其他可以读取数据public class Memento{ private string st.原创 2022-01-24 10:17:20 · 147 阅读 · 0 评论 -
设计模式---组合模式---12
组合模式:将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。有安全模式和透明模式:透明模式:所有派生类都有基类共同的行为,统一操作。安全模式:部分派生类不具有基类的某些行为,不便于操作,需要判断该对象是哪类对象。但具体情况具体考虑,比如说,所有派生类行为差别不大时,用透明模式,反之用安全模式。//组合中的对象声明接口,实现所有类共有接口的默认行为public abstract class Component{ protected原创 2022-01-24 09:13:33 · 79 阅读 · 0 评论 -
设计模式---适配器---11
这个就不要怎么说了,比较简单,看图就明白了。一个类接口不兼容,用另一个类包装一下,能使用原有类的功能。原创 2022-01-22 11:33:46 · 164 阅读 · 0 评论 -
设计模式---状态模式---10
有限状态机最佳实践。下图只抽象出来了状态,还可以抽象出来条件。简单的状态机:细节可以自己完善using System.Collections.Generic;//状态机public class Context{ //管理的状态 public List<State> states; public State current; //切换状态 public void ChangeState(State state) {原创 2022-01-22 11:28:44 · 270 阅读 · 0 评论 -
设计模式---抽象工厂---9
using System.Collections;using System.Collections.Generic;using System.IO;using System.Reflection;using UnityEngine;//产品1public class User{ public string Name { get; set; }}//产品1操作接口public interface IOperatorUser{ void Insert(User use.原创 2022-01-22 10:04:00 · 430 阅读 · 0 评论 -
设计模式---观察者模式---8
using System.Collections;using System.Collections.Generic;using UnityEngine;//被观察的对象基类,或者发布者基类public abstract class Subject{ private List<Observer> observers = new List<Observer>(); public void AddObserver(Observer observer) .原创 2022-01-21 18:17:37 · 502 阅读 · 0 评论 -
设计模式---建造者模式---7
using System.Collections;using System.Collections.Generic;using UnityEngine;//具体产品:产品的构建过程比较稳定,配置可能会变化。public class Product { List<string> parts = new List<string>(); public void Add(string part) { parts.Add(part);原创 2022-01-21 15:23:16 · 87 阅读 · 0 评论 -
设计模式---外观模式---7
什么使用最好?分三个阶段:首先在设计初期阶段,应该要有意识的将不同的两个层分离,比如经典的三层架构,就需要考虑在数据访问层和业务逻辑层、业务逻辑层和表现层的层与层之间建立外观Facade。为复杂的子系统提供一个简单的接口。开发阶段,子系统不断的重构演化变得复杂时,增加一个Facade可以提供一个简单接口。第三、维护一个遗留的大型系统时,可能这个系统已经非常难以维护和扩展了,但它包含重要的功能,新的需求开发依赖于它,也可以用Facade.//外观类public class Facade{ .原创 2022-01-21 12:59:40 · 105 阅读 · 0 评论 -
设计模式---模板方法---6
模板方法模式是通过把不变行为搬移到基类,去除派生类中的重复代码来体现它的优势。当不变的和可变的行为在方法的子类实现中混合在一起的时候,不变的行为就会在子类中重复出现。通过模板方法模式把这些行为搬移到单一的地方,这样就帮助派生类摆脱重复的不变行为的纠缠。其实我们写代码的时候,多多少少都有用到过,所以不用刻意在意设计模式的名字。public abstract class AbstractClass{ public abstract void PrimitiveOperation1();原创 2022-01-21 11:45:06 · 500 阅读 · 0 评论 -
设计模式---工厂方法---5
工厂方法://计算器操作public abstract class Operation{ private float num1; private float num2; public float Num1 { get { return num1; } set { num1 = value; } } public float Num2 { get { return num2; } ..原创 2022-01-21 11:15:21 · 90 阅读 · 0 评论 -
设计模式---代理模式---4
using UnityEngine;interface GiveGift{ void GiveDolls(); void GiveFlowers(); void GiveChocolate();}//代理public class Proxy : GiveGift{ Pursuit gg; public Proxy(SchoolGirl mm) { gg = new Pursuit(mm); } publi.原创 2022-01-21 10:18:38 · 180 阅读 · 0 评论 -
设计模式---装饰模式---3
具体细节看书吧!装饰模式:动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。装饰模式是为已有功能动态添加更多功能的一种方式。优点:把类中的装饰功能从类中搬移去除,这样可以简化原有的类,有效地把类的核心职责和装饰功能区分开了,而且可以去除相关类中重复的装饰逻辑。使用时,装饰的顺序很重要,比如加密数据和过滤词汇都可以是数据持久化前的装饰功能,但若先加密了数据再用过滤功能就会出问题。最理想的情况,保证装饰类之间彼此独立。//Component基类public class原创 2022-01-21 09:50:56 · 249 阅读 · 0 评论 -
设计模式---策略模式---2
//收款基类public abstract class CashSuper{ public abstract double AcceptMoney(double money);}//其他具体收款方式:正常、打折、满减public class CashNormal : CashSuper{ public override double AcceptMoney(double money) { return money; }}public c原创 2022-01-21 09:19:21 · 201 阅读 · 0 评论 -
设计模式---简单工厂---1
大话设计模式学习笔记:操作类:把易变化的操作抽象出来,并为每一种操作写一个派生类。//计算器操作基类public abstract class Operation{ private float num1; private float num2; public float Num1 { get { return num1; } set { num1 = value; } } public float Num2原创 2022-01-21 08:59:55 · 81 阅读 · 0 评论 -
设计模式精简
本文是力扣公众号的精简总结----------链接工厂方法模式:为每一类对象建立工厂,将对象交由工厂创建,客户端只和工厂打交道。抽象工厂模式:为每一类工厂提取出抽象接口,使得新增工厂、替换工厂变得非常容易。建造者模式:用于创建构造过程稳定的对象,不同的 Builder 可以定义不同的配置。单例模式:全局使用同一个对象,分为饿汉式和懒汉式。懒汉式有双检锁和内部类两种实现方式。原型模式:为一个类定义 clone 方法,使得创建相同的对象更方便。适配器模式:用于有相关性但不兼容的接口桥接模式:用于同原创 2021-11-18 16:39:25 · 265 阅读 · 0 评论