![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
大鲸鱼锅锅
才不是菜鸟
展开
-
工厂方法
工厂方法简单工厂的优缺点优点: 将子类的创建与具体的应用场景解藕,使得修改和新增产品类型时只需要维护工厂,而不用考虑实际应用场景缺点: 1.在新增和修改产品创建时,依然要修改工厂,违反了开闭原则,随着类型的增多将不断增加该类的逻辑 2.工厂类集中了所有产品的创建逻辑,一旦发生问题将影响整个系统工厂方法 工厂方法通过对工厂进行一次抽象,将具体产品的创建交给具体工厂去完成,从而...原创 2019-02-14 19:03:16 · 248 阅读 · 0 评论 -
代理模式
代理模式定义代理模式(Proxy)为其他对象提供一种代理以控制对这个对象的访问。解释:代理模式是为实际对象提供一个代理来访问,实现方式是 代理同实际对象继承自同一个接口,代理持有实际对象,并且对实际对象的访问都通过代理来进行,因为代理可以控制对该对象的访问。简单的说:对于一个类,继承于他的抽象并持有他,然后控制对他的访问UML代码首先我们有一个抽象及其实现namespace...原创 2019-03-04 10:34:33 · 99 阅读 · 0 评论 -
观察者模式和委托事件
观察者模式定义观察者模式(Observer Pattern)——在对象之间定义了一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象会收到通知并自动更新。具体的说目的是 “类A想在类B变化的时候得到消息,从而跟着变化”最简单的方式,双向关联: 类A知道类B,并在一定时期将自身告诉类B 类B持有类A的对象,并在自身变化的时候调用类A的方法 这种方式不好的地方在于造成了双向...原创 2019-03-08 18:12:30 · 200 阅读 · 0 评论 -
组合模式
组合模式定义组合模式(Composite)主要用来处理一类具有“容器特征”的对象——即它们在充当对象的同时,又可以作为容器包含其他多个对象。成员:节点抽象:Component叶子结点:Leaf,继承自Component枝干节点:Composite,继承自Composite解释:其实就是一个树形对象,类似于Unity的Transform,可以通过这个对象获取到他的子物体的对象对于...原创 2019-02-26 20:14:00 · 163 阅读 · 0 评论 -
命令模式
命令模式定义命令模式(Command Pattern)——是将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。解释正常来说,我们将一步操作分为调用方和执行方,这样二者各司其职,符合单一职责原则。例如:将一个方块左移一步,执行方有一个Move方法,调用方传递参数并调用执行方的方法去执行。命令模式是将调用方和执行方...原创 2019-03-05 18:24:02 · 124 阅读 · 0 评论 -
装饰模式
装饰模式定义装饰者模式(Decorator Pattern) 装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。简单概括就是:对于一个类,继承他并持有他,然后拓展他的功能UML我们有一个Component类及其实现ConcreteComponent现在做一个装饰类Decorator,并实现装饰器A和...原创 2019-02-25 19:09:55 · 194 阅读 · 0 评论 -
关于创建型模式的理解
关于创建型模式的理解单例模式 单例模式简单一言概括,就是对静态类的优化,一种可以储存中间态的“静态”模式 使用单例模式需要注意懒汉、饿汉的区别和多线程的限制原型模式 原型模式属于一种优化模式,就是只创建一次对象,而之后用到的时候“克隆”对象,以优化创建过程,对于复杂对象,可以直接克隆而避免创建和组装,或者干脆就是对产品子模块进行克隆后组装到新的产品。 在c#中,浅克隆是默认方法...原创 2019-02-19 18:27:17 · 317 阅读 · 0 评论 -
建造者模式
建造者模式建造者模式的定义 建造者模式是设计模式的一种,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 通俗点讲: 1.建造者是一种创建型模式,目的是创建所需要的对象 2.同工厂模式不一样的是,建造者的重心在如何组装对象而不是如何new对象建造者模式的角色 1.产品 要创建的产品 2.抽象建造者 定义了组装产品的组装步骤 3.具体建...原创 2019-02-19 18:24:38 · 120 阅读 · 0 评论 -
享元模式
享元模式定义享元模式(Flyweight) 运用共享技术有效地支持大量细粒度的对象。解释: 大量的对象会出现两个问题:1.内存的大量占用;2.大量对象的创建和销毁时间; 享元模式就是用一种方法去共享“元件”,以减少内存占用和对象数量UML成员在享元模式中,我们将对象成员分为: 1.内在状态 由享元对象自己保存内部状态 2.外在状态 可以动态改变,享元对象需要用到外...原创 2019-02-28 18:56:53 · 83 阅读 · 0 评论 -
简单工厂
简单工厂简单工厂的意义在于,将子类的创建放在工厂中一起创建,防止子类拓展或修改后,对上层调用的影响没有工厂的情况假设我们知道手机这个类,以及它的子类iPhoneXs、VivoPhonepublic class PhoneBase { public virtual void Show() { Debug.Log("My Phone Name : "); ...原创 2019-02-13 19:29:15 · 209 阅读 · 0 评论 -
外观模式
外观模式定义外观模式(Facade) “为子系统定义一组统一的接口,这个高级的接口会让子系统更容易被使用”解释: 外观模式其实相当容易理解,假设我们有非常多的子系统,每个系统各自又有很多的接口,这使得这些系统阅读和使用起来非常不便,而一般的客户并不关心子系统的细节,他们只关注于有限的一些内容,所以我们需要一个门面(facade)去让他能够更简单的使用这些系统。UML相当容易理解...原创 2019-02-27 18:48:08 · 119 阅读 · 0 评论 -
Unity中常用的单例模式
基本单例懒汉模式用到时才创建的单例模式//单例模式// 懒汉 在使用时才创建// 缺点:不适用于多线程// 私有化构造函数public class SingletonTest_Base{ private static SingletonTest_Base instance; public static SingletonTest_Base Instance { get ...原创 2019-02-11 19:10:28 · 411 阅读 · 0 评论 -
桥接模式
桥接模式定义 桥接模式即将抽象部分与它的实现部分分离开来,使他们都可以独立变化。 桥接模式将继承关系转化成关联关系,它降低了类与类之间的耦合度,减少了系统中类的数量,也减少了代码量。UML理解 以上两句话结合桥接模式个人理解是这样的: 1.在抽象层面上,是抽象A和抽象B 关联/聚合 2.在具体实现上,抽象A可以独立拓展,而抽象B也可以独立拓展 举个例子: 1.角...原创 2019-02-22 20:02:49 · 497 阅读 · 0 评论 -
适配器模式
适配器模式定义将一个类的接口转换成客户希望的例外一个接口,Adapter 模式使得原本由于接口不兼容二不能一起工作的那些类可以一起工作。角色Target(目标类):客户希望使用的类或接口Adaptee(被适配的类):需要被适配的类Adapter(适配器):继承自Target,包装一个Adaptee的对象,并将其接口的原方法转换为目标类的方法UML图代码Target类或接口na...原创 2019-02-21 19:08:56 · 161 阅读 · 0 评论 -
抽象工厂
抽象工厂对比抽象工厂和工厂方法工厂方法中,有一个抽象产品和一个抽象工厂,然后具体产品由具体工厂来生产抽象工厂中,有多个抽象产品,一个抽象工厂,然后多个具体工厂都能生产这两类产品,只不过生产出来的具体产品并不相同举例来说: 苹果和小米都生产手机、平板、电脑,他们是两家具体的工厂,都生产这三个等级的产品 苹果、小米各都是一个产品族 我们三个抽象产品,分别是手机、平板、电脑 我们...原创 2019-02-15 20:18:43 · 226 阅读 · 0 评论 -
模板方法模式
模板方法模式定义模板方法(Template Method)——在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。解释:从类图上来看,模板方法非常简单,就是一个 继承 关系。从目的来看,模板方法就是就是将方法的实现延迟到子类中去:同一类相同的方法在父类中实现,不同的方法在子类中实现在抽象类方法中调用一...原创 2019-03-04 19:19:46 · 130 阅读 · 0 评论