wcf之二(接口契约式编程思想)

Wcf编程之二(接口契约编程)

简述

任务理解接口式编程,定义一个接口是为了遵循中规范,便于程序的扩展。接口是一种能力也是一种约定。1、接口不可以被实例化 2、实现类必须实现接口的所有方法(抽象类除外)3、接口可以实现多继承 4、接口中可定义属性。

实例

打印机需要墨盒和纸张。墨盒有黑白、彩色。纸张有A4 B5.打印机怎么实现对不同纸张好墨盒打印的呢?接口契约式编程,打印机执行定义纸张接口和墨盒接口两个约定。纸张厂家和墨盒厂家只需遵循约定就可有打印。

代码

接口契约墨盒

public interface IInkBox

    {

       string getColor();

    }

纸张

public interface IPaper

    {

       string getSize();

    }

遵循约定纸张厂家造纸 A4 B5两种纸张

 class A4Paper:IPaper

    {

        public stringgetSize()

        {

            return "A4Paper";

        }

    }

  class B5Paper:IPaper

    {

        public stringgetSize()

        {

            return "B5Paper";

        }

    }

墨盒厂家遵循约定墨盒黑白 彩色

class ColorBox:IInkBox

    {

        public stringgetColor()

        {

            return "彩色";

        }

    }

class GrayBox:IInkBox

    {

        public stringgetColor()

        {

            return "黑白";

        }

}

打印机类

  class Printer

    {

        public voidgetPrinter(IInkBox box, IPaper paper)

        {

            Console.Write("用{0}墨盒,纸张{1}",box.getColor(),paper.getSize());

        }

    }

打印机实现打印不同纸张和不同颜色的方法   staticvoid Main(string[]args)

      {

            GrayBox gray = newGrayBox();

            A4Paper A4 = new A4Paper();

            ColorBox colorBox = newColorBox();

            B5Paper B5 = new B5Paper();

            Printer printer = newPrinter();

           printer.getPrinter(gray,A4);//打印机厂商给出一个约定,纸张和墨盒厂商遵循

            Console.WriteLine();

           printer.getPrinter(colorBox,B5);

            Console.Read();

        }

总结

可以看出面向契约式编程,非常编译程序的扩展。如果又需要打印其他的纸张,执行遵循纸张接口就可以了。

时间: 2024-11-05 13:31:51

wcf之二(接口契约式编程思想)的相关文章

PHP 面向对象程序设计(oop)学习笔记(一) - 抽象类、对象接口、instanceof 和契约式编程

1.PHP中的抽象类 PHP 5 支持抽象类和抽象方法.定义为抽象的类不能被实例化.任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的.被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现.在类的声明中使用 abstract 修饰符可以将某个类声明为抽象的. 可以这样理解,抽象类作为一个基类,它把特定的细节留给继承者来实现.通过抽象概念,可以在开发项目中创建扩展性很好的架构. abstract class AbstractClass{   

PHP OPP 和模式 (1) - 抽象类、对象接口、instanceof 和契约式编程

PHP高级程序设计 学习笔记 2014.06.09 本文将介绍抽象类.接口和一种称为契约式编程的技术.使用这些OPP机制,所编写的代码就不限于只能计算或者输出内容了.这些机制能够在概念层次上定义类之间交互作用的规则,也为应用程序的扩展和定制提供了基础. 1.抽象类 抽象类机制中总是要定义一个公共的基类,而将特定的细节留给继承者来实现.通过抽象概念,可以在开发项目中创建扩展性很好的架构.任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的.被定义为抽象的方法只是声明

.NET 4.0 中的契约式编程

契约式编程不是一门崭新的编程方法论.C/C++ 时代早已有之.Microsoft 在 .NET 4.0 中正式引入契约式编程库.博主以为契约式编程是一种相当不错的编程思想,每一个开发人员都应该掌握.它不但可以使开发人员的思维更清晰,而且对于提高程序性能很有帮助.值得一提的是,它对于并行程序设计也有莫大的益处. 我们先看一段很简单的,未使用契约式编程的代码示例. // .NET 代码示例 public class RationalNumber { private int numberator; p

理解契约式编程

重要概念 抽象类: 当类中有一个方法为抽象方法,该类即为抽象类.继承一个抽象类时,应该实现其所有的抽象方法. <?php abstract class car{ protected $name; protected $speed; public function __construct($name, $speed) { $this->name = $name; $this->speed = $speed; } abstract function run(); public functio

华山论剑之契约式编程与防御式编程

背景 事情的来由还要从几十几亿年前的一次星球大爆炸说起,sorry,背错台词了,是从几天前讨论接口返回数据和几个月前讨论课件本地数据结构说起,简单的说,就是碰到约定好的内容出现异常,是我们在程序中内部作兼容处理,还是抛出去. 打个比方,我们要解析一段json,约定这个json的格式,只能是正常格式,或者是空,那么一旦返回json的方法返回了一个『既不是正常格式,又不是空的异常值』,程序该如何处理呢? 小花:一旦碰到约定异常,程序必须兼容处理,一定不能让程序Crash 小Fa:一旦碰到约定异常,就

Objective-C 链式编程思想

链式编程思想 链式编程是什么 链式编程就是将调用多个方法用点语法连接起来,让代码更加简洁和可读性更高刚开始接触链式编程是Masonry,用起来真的非常爽 1 make.left.right.top.equalTo(self.view); 这样一句语句就调用了4个方法.left调用了left属性的get方法.right, .top调用了right和top方法.equalTo()调用了equalTo方法 这种写法极大简化了写约束的方式 原理 原理就是调用的属性的类型或者方法的返回类型为原调用属性的类

链式编程思想

接下来的部分摘自:最快让你上手之ReactiveCocoa基础篇 先简单介绍下目前咱们已知的编程思想. 1 面向过程:处理事情以过程为核心,一步一步的实现. 2 面向对象:万物皆对象 3 链式编程思想:是将多个操作(多行代码)通过点号(.)链接在一起成为一句代码,使代码可读性好.a(1).b(2).c(3) 链式编程特点:方法的返回值是block,block必须有返回值(本身对象),block参数(需要操作的值) 代表:Masonry框架. 4 响应式编程思想:不需要考虑调用顺序,只需要知道考虑

PHP 面向对象编程和设计模式 (1/5) - 抽象类、对象接口、instanceof 和契约式编程邹渍祝揍缀踪

http://www.ebay.com/cln/lv1_ldhb/2015.01.29/166849938013 http://www.ebay.com/cln/nh5_jvtj/2015.01.29/166849932013 http://www.ebay.com/cln/j7d_rvpx/2015.01.29/166855853011 http://www.ebay.com/cln/xjh_hjrf/2015.01.29/166674518014 http://www.ebay.com/cl

函数响应式编程(FRP)思想

序 ReactiveCocoa是IOS广为使用的技术框架,而ReactiveCocoa的核心思想就FRP.FRP不同于JAVA的object-oriented和AOP,FRP能让你的代码像数学一样简洁,业务像流水一样清晰流畅. 函数响应式编程 响应式编程思想为体,函数式编程思想为用. 响应式编程 例如,在命令式编程环境中, a:=b+c表示将表达式的结果赋给 a,而之后改变 b 或 c的值不会影响 a.但在响应式编程中,a的值会随着 b或 c的更新而更新. 在响应式编程当中,a:=b+c声明的是