
设计模式
文章平均质量分 53
如果我来了6
这个作者很懒,什么都没留下…
展开
-
设计模式之备忘录模式(Memento)
备忘录模式定义代码实现 /// <summary> /// 魔兽争霸 /// </summary> public class War3 { public string Race { get; set; } public string Hero { get; set; } public string Army { get; set; } public string Resou原创 2021-09-30 16:38:24 · 117 阅读 · 0 评论 -
设计模式之状态模式(State)
状态模式的定义代码实现 public enum LightColor { Green = 0, Yellow = 1, Red = 2, Blue = 3 } public abstract class LightBase { public LightColor Color { get; set; } public void Shine()原创 2021-09-30 09:17:53 · 137 阅读 · 0 评论 -
设计模式之策略模式(Strategy)
设计模式:面向对象语言开发过程中,对各种问题和场景的解决方案的沉淀 —是解决问题的套路,提出场景–解决问题–总结沉淀–推广应用行为型设计模式:关注对象和行为的分离设计模式都是为了解决一类问题而存在的,往往在解决一类问题的同时会带来的新的问题,会有对应的解决方案。设计模式不是万能的。策略模式定义策略模式应对业务处理中,会有多种相似处理方式(算法),然后封装成算法+抽象,此外,调用环节也有扩展要求的,来个context红色部分为稳定的,蓝色部门为变化的代码实现策略模式和简单工厂的结合扩展原创 2021-09-29 11:23:14 · 128 阅读 · 0 评论 -
设计模式之访问者模式(Vistor)
访问者模式定义访问者模式是封装一些施加于某种数据结构之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构则可以保存不变。访问者模式适用于数据结构相对稳定的系统, 它把数据结构和作用于数据结构之上的操作之间的耦合度降低,使得操作集合可以相对自由地改变。数据结构的每一个节点都可以接受一个访问者的调用,此节点向访问者对象传入节点对象,而访问者对象则反过来执行节点对象的操作。这样的过程叫做“双重分派”。节点调用访问者,将它自己传入,访问者则将某算法针对此节点执行。表示一个作用于某对象结构中的各元素的操原创 2021-09-26 13:38:37 · 333 阅读 · 0 评论 -
AOP 面向切面编程--WPF Prism.Unity框架中集成的AOP
概念1、Aspect-Oriented Programming(面向切面编程),AOP就是对OOP(面向对象编程)的一种功能扩展。2、需要将核心业务与公共业务分离。AOP优势1、将通用功能从业务逻辑中抽离出来,可以省略大量重复代码,有利于代码的操作和维护。2、模块化开发,降低软件架构的复杂度。静态AOP采用装饰器模式或者代理模式实现。抽象类与实现类: public interface IInfoProcessor { void ReadInfo(string原创 2021-09-01 23:17:46 · 2565 阅读 · 0 评论 -
设计模式之桥接模式(Bridge)
桥接模式定义桥接模式:解决类的多维度变化将类的爆炸个数由MNL降为M+N+L个代码实现手机沿着操作系统和品牌两个维度发生了变化 public interface ISystem { string System(); string Version(); } public class AndroidSystem : ISystem { public string System() {原创 2021-08-19 23:05:59 · 93 阅读 · 0 评论 -
设计模式之适配器模式(Adapter)
适配器模式定义代码实现适配器分为:类适配器模式和对象适配器模式类适配器模式 /// <summary> /// 通过继承 类适配器模式 /// </summary> public class RedisHelperClass : RedisHelper, IHelper { public void Add<T>() { base.AddRedis<T>原创 2021-08-18 23:20:19 · 108 阅读 · 0 评论 -
设计模式之原型模式(Prototype)
原型模式定义代码实现MemberwiseClone:内存拷贝,不走构造函数,直接内存copy,所以没有性能损失;而且产生的是新对象----浅拷贝–只拷贝引用深拷贝:直接new子类型提供原型方式 --每一个类型都提供好深拷贝函数序列化和反序列化–类型要加Serializable特性 public static StudentPrototype CreateInstance() { StudentPrototype student =原创 2021-08-16 23:00:41 · 98 阅读 · 0 评论 -
设计模式之建造者模式(Builder)
建造者模式定义代码实现 /// <summary> /// 工人抽象 /// </summary> public abstract class AbstractBuilder { public abstract void Engine(); public abstract void Wheels(); public abstract void Light(); pu原创 2021-08-01 22:47:43 · 95 阅读 · 0 评论 -
设计模式之抽象工厂模式(AbstractFactory)
抽象工厂的定义代码实现namespace ConsoleApplication1.AbstractFactory{ /// <summary> /// 抽象工厂 /// </summary> abstract class AbstractFactory { // Methods public abstract AbstractProductA CreateProductA(); pub原创 2021-07-31 13:16:28 · 109 阅读 · 0 评论 -
设计模式之工厂方法模式(FactoryMethod)
工厂方法的定义代码实现 /// <summary> /// 工厂类 /// </summary> public interface IFactory { IRace CreateInstance(); } public class HumanFactory : IFactory { public IRace CreateInstance() {原创 2021-07-31 00:09:33 · 90 阅读 · 0 评论 -
设计模式之简单工厂模式(SimpleFactory)
简单工厂简单工厂设计模式:包含一组需要创建的对象,通过一个工厂类来实例化对象。好处:去掉上端对细节的依赖,保证上端的稳定。符合依赖倒置原则(依赖倒置原则:上层模块不应该依赖于下层模块,二者应该通过抽象来依赖。依赖抽象,而不是依赖细节)。缺陷:没有消除矛盾,只是转移矛盾,甚至还集中了矛盾。任何设计模式都是解决一类问题的,不是万能的,通常在解决一类问题的时候,还会带来新的问题。普通写法通过一个静态方法来判断生成相应的对象。 public class ObjectFactory {原创 2021-07-28 22:40:01 · 161 阅读 · 0 评论 -
设计模式的分类与特点
创建型设计模式:关注对象的创建结构型设计模式:关注类与类之间的关系行为型设计模式:关注对象和行为的分离原创 2021-07-28 22:16:45 · 110 阅读 · 0 评论 -
设计模式之单例模式(Singleton)
单例的用处单例就是对象常驻内存,重用对象。单例的用途场景:数据库连接池线程池流水号生成器配置文件读取IOC容器实例但是同一个实例,不能解决多线程并发引起的线程安全问题。单例模式–简单版单例模式:保证进程中,类型只有一个实例a) 构造函数私有化,防止他人实例化b) 对外提供一个获取实例的途径,公开的静态方法c) 返回共用一个静态字段此种方式不支持多线程。 public sealed class Singleton { private Singleton(原创 2021-07-27 23:15:10 · 150 阅读 · 0 评论 -
设计模式与架构
设计模式与架构 软件设计最大的敌人,就是应付需求不断的变化。变化有时候是无穷尽的,于是项目开发就在反复的修改和更新中无限期地延迟交付的日期。变化如悬在头顶的达摩克斯之剑,令许多软件工程专家一筹莫展。正如无法找到解决软件开发的“银弹”,要彻底将变化扼杀在摇篮之中,看来也是不可能完成的任务。那么,积极地面对“变化”,方才是可取的态度。于是,极限编程(XP)的倡导者与布道者Kent Beck提出要“拥抱变化”,从软件工程方法的角度,提出了应对“变化”的解决方案。而本文则试图从软件设计方法的角度,来探讨如何原创 2021-04-15 22:18:17 · 119 阅读 · 0 评论