随笔分类 -  c#设计模式

c# 24种设计模式5原型模式(Prototype)
摘要:前言 原型模式其实C# Object中已经提供了一个Clone( )方法,平时很少用到,最近读Retrofit源码时候看到有这种使用方式。 定义 原型模式就是在系统clone()标记的基础上,对Clone()进行复写,不同的操作可以产生两种拷贝模式。 例子一场景 是个java的, 只是介绍使用的场景 阅读全文
posted @ 2018-04-21 12:04 小石头的一天 阅读(514) 评论(0) 推荐(1)
c# 24种设计模式4建造者模式(Builder)
摘要:先来一个例子 宝马和大奔子类继承 Director 主管 Main 客户端 建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式包含如下角色:Builder:抽象建造者ConcreteBuilder:具体建造者Director:指挥者Product:产品角 阅读全文
posted @ 2018-04-19 10:34 小石头的一天 阅读(177) 评论(0) 推荐(0)
c#设计模式3抽象工厂模式(Abstract Factory)
摘要:这里首先以一个生活中抽象工厂的例子来实现一个抽象工厂,然后再给出抽象工厂的定义和UML图来帮助大家更好地掌握抽象工厂模式,同时大家在理解的时候,可以对照抽象工厂生活中例子的实现和它的定义来加深抽象工厂的UML图理解。抽象工厂模式比其它工厂模式更加抽象,抽象工厂模式适用与多个抽象类的情况下,通过工厂返 阅读全文
posted @ 2018-04-18 15:37 小石头的一天 阅读(190) 评论(0) 推荐(0)
C#设计模式-2工厂方法模式(Factory Method)
摘要:什么是工厂模式?类比生活中的概念,当我们需要打电话的时候,我们需要一部手机,我们通常会选择直接去卖手机的实体店买。但在程序设计中,当我们需要调用一个类(PhoneA或PhoneB)的方法的时候,我们往往还要关心他是怎么new出来的(见代码段1)。这就好比我们自己还要去工厂里面告诉他们你要怎么生产出一 阅读全文
posted @ 2018-04-18 11:13 小石头的一天 阅读(254) 评论(0) 推荐(0)
C#设计模式-1简单工厂模式Simple Factory)
摘要:以上的代码很简单吧,基本都能够理解吧。 优点与缺点 看完简单工厂模式的实现之后,你和你的小伙伴们肯定会有这样的疑惑(因为我学习的时候也有)——这样我们只是把变化移到了工厂类中罢了,好像没有变化的问题,因为如果客户想吃其他菜时,此时我们还是需要修改工厂类中的方法(也就是多加case语句,没应用简单工厂 阅读全文
posted @ 2018-04-18 10:59 小石头的一天 阅读(314) 评论(0) 推荐(0)
Soa思想分布式服务webservice WCF
摘要:什么是分布式事务 分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。以上是百度百科的解释,简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部 阅读全文
posted @ 2018-04-17 10:33 小石头的一天 阅读(170) 评论(0) 推荐(0)
面向服务的架构(SOA)演变图片
摘要:公司项目演变 成熟的公司项目结构 对比 总线-服务的注册与发现 阅读全文
posted @ 2018-04-17 10:11 小石头的一天 阅读(568) 评论(0) 推荐(0)
耦合性 内聚加实例
摘要:基本信息 耦合性(或称"耦合度") 英文 : coupling 耦合性也叫块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块之间越独立则越差,模块间耦合的高低取决于模块间接口的复杂性,调用的方式以及传递的信息。 形象的说,就是要将代码写的和电脑一样 阅读全文
posted @ 2018-02-09 14:10 小石头的一天 阅读(781) 评论(0) 推荐(0)
里氏代换原则
摘要:里氏代换原则(Liskov Substitution Principle LSP)是面向对象设计的基本原则之一。 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。 LSP是继承复用的基石,只有当子类可以替换掉父类,软件单位的功能不受到影响时,父类才能真正被复用,而子类也能够在父类的基础上 阅读全文
posted @ 2018-02-09 11:33 小石头的一天 阅读(598) 评论(0) 推荐(0)
开闭原则
摘要:开闭原则Open Closed Principle (OCP)是面向对象设计中“可复用设计”的基石,是面向对象设计中最重要的原则之一,其它很多的设计原则都是实现开闭原则的一种手段。对于扩展是开放的,对于修改是关闭的,这意味着模块的行为是可以扩展的。当应用的需求改变时,我们可以对模块进行扩展,使其具有 阅读全文
posted @ 2018-02-09 11:01 小石头的一天 阅读(187) 评论(0) 推荐(0)
依赖注入
摘要:举个例子,组件A中有类ClassA,组件B中有接口IB和其对应的实现类B1和B2。 那么,现在ClassA需要利用IB接口来做一些事情,例如: 现在的问题来了,IB b = ??? 中这三个???要写什么代码?是要写成 IB b = new B1(),还是要写成IB b = new B2() ? 不 阅读全文
posted @ 2018-02-08 18:32 小石头的一天 阅读(142) 评论(0) 推荐(0)
c# 24种设计模式
摘要:备忘录模式(Memento Pattern) 策略模式(Strategy Pattern) 抽象工厂模式(Abstract Factory Pattern) 代理模式(Proxy Pattern) 单例模式(Singleton Pattern) 迭代器模式(Iterator Pattern) 访问者 阅读全文
posted @ 2018-02-07 10:32 小石头的一天 阅读(334) 评论(0) 推荐(0)
c# 策略模式 加工厂模式-对象与行为分离
摘要:计算器程序 策略模式是一种行为学模式.行为是同等级的算法 ,这些行为每个模式封装到一个类里 上端提供数据 ,下端提供算法 ,中间层context context 把上端的数据和算法 放到context 中计算 ,把算法调用 的逻辑转移, 转移之后,减少 代码量. 解决代码复杂的问题 如下: 可能用到 阅读全文
posted @ 2017-11-09 10:32 小石头的一天 阅读(570) 评论(0) 推荐(0)
c#特性attribute:(二)
摘要:日志 初始化 特性类里边构造函数里的属性,带参数不带参数的 ******特性是编译时是不加到il 中的,是加到metadata中 ,本身对程序运行没有影响,除非我们主动的读取和使用区供反射可以使用. 查找这个类型是否有特性 ,然后通过反射拿到特性. 拿到student 的特性的用处 特性能提供 额外 阅读全文
posted @ 2017-11-08 10:25 小石头的一天 阅读(220) 评论(0) 推荐(0)
c#特性attribute:
摘要:特性是被编译到metadata中, 是提供给反射用的. 特性attribute:1 什么是attribute,和注释有什么区别 2 声明和使用attribute3 使用attribute完成扩展4 AOP思想的体现 阅读全文
posted @ 2017-09-27 10:18 小石头的一天 阅读(165) 评论(0) 推荐(0)
c#程序设计原则
摘要:单一职责 开闭原则:对扩展开放,对修改封闭. 方法 的职责,一个方法做的事越多,造成问题的可能性会增加. 解决的方法1:就是分拆2:写单独类 阅读全文
posted @ 2017-09-26 10:35 小石头的一天 阅读(260) 评论(0) 推荐(0)
c#设计模式
摘要:一: 创建型设计模式(长视频) 二:结构型设计模式 三:行为型设计模式 /// <summary> /// 1 单例模式(单线程和多线程) 减少对象的创建,让对象只创建一次. /// 2 单例模式的三种写法 /// 3 单例模式的优缺点和应用场景 私有构造函数,不允许外部随便new 新实例 创建一个 阅读全文
posted @ 2017-09-15 17:10 小石头的一天 阅读(191) 评论(0) 推荐(0)