
设计模式
7Maggie_C
这个作者很懒,什么都没留下…
展开
-
设计模式(二)策略模式
考虑一个需求:做一个商场收银软件,营业员根据客户所购买商品的单价和数量,向客户收费。好像很简单,两个文本框,输入单价和数量,再用个列表框来记录商品的合计,最终用一个按钮来算出总额就可以了,对,还需要一个重置按钮来重新开始,不就行了?代码如下://声明一个double变量total来计算总计double total = 0.0d;private void btnOk_C...原创 2018-09-17 22:50:14 · 348 阅读 · 0 评论 -
设计模式(十三)抽象工厂模式
数据访问的代码?(以“新增用户”和“得到用户”为例。)最基本的数据访问程序用户类, 假设只有ID和Name两个字段,其余省略:class User{ private int _id; public int ID{ get{return _id;} set{_id=value;} } private stin...原创 2018-09-28 16:40:17 · 285 阅读 · 0 评论 -
设计模式(十)外观模式
股民炒股代码?第一个版本代码结构图:具体股票、国债、房产类:// 股票1:class Stock1{ // 卖股票 public void Sell(){ Console.WriteLine("股票1卖出"); } // 买股票 public void Buy{ Console.WriteLine...原创 2018-09-22 21:42:35 · 279 阅读 · 0 评论 -
设计模式(九)迪米特法则
迪米特法则(LoD),也叫最少知识原则:如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。 迪米特法则首先强调的前提是在类的结构设计上,每一个类都应当尽量降低成员的访问权限。也就是说,一个类包装好自己的private状态,不需要让别的类知道的字段或行为就不要公开。迪米特法则其根本思想,是强调了...原创 2018-09-22 17:57:31 · 320 阅读 · 1 评论 -
设计模式(八)模板方法模式
老师在黑板上抄题目,我们要先抄题目,再做答案。请把抄题目的程序写出来。第一版(重复=易错+难改)代码结构图:学生甲抄的试卷类:// 学生甲抄的试卷class TestPaperA{ // 试题1 public void TestQuestion1(){ Console.WriteLine("123+456=[] a.123 b.456 c...原创 2018-09-22 17:39:56 · 217 阅读 · 0 评论 -
设计模式(七)原型模式
要求有一个简历,必须要有姓名,可以设置性别和年龄,可以设置工作经历,最终需要写三份简历。 初步实现简历类:// 简历类class Resume { private string name; private string sex; private string age; private string timeArea; private ...原创 2018-09-22 15:59:33 · 606 阅读 · 0 评论 -
设计模式(六)工厂方法模式
想想我们之前的简单工厂模式,是这样的:结构图:工厂类:class OperationFactory{ public static Operation createOperate(string operate){ Operation oper =null; switch(operate){ case "+": ...原创 2018-09-21 17:15:52 · 647 阅读 · 0 评论 -
设计模式(十二)观察者模式
老板回来时,前台会打电话到公司里,以防老板发现员工们在看股票。代码实现?版本一 双向耦合的代码前台秘书类:class Secretary{ // 同事列表 private IList<StockObserver> observers = new List<StockObserver>(); private sting action...原创 2018-09-25 21:52:45 · 4041 阅读 · 0 评论 -
设计模式(一)简单工厂模式
先来考虑一道题目:请用C++、Java、C#或VB.NET任意一种面向对象语言实现一个计算器控制台程序,要求输入两个数和运算符号,得到结果。题目很简单,我们脑海里已经有了初步的思路和答案,写出来可能是这样的:class Program{ static void Main(string[] args) { try { Console.Write("请输入数字A:");...原创 2018-09-15 15:11:54 · 341 阅读 · 0 评论 -
设计模式(五)代理模式
一个男生卓贾易追求一个女生李娇娇,两人并不认识,但两人有共同的好友戴励。代码如何写?版本一最开始很容易想到——结构图: 追求者类:class Pursuit{ SchoolGirl mm; public Pursuit(SchoolGirl mm){ this.mm = mm; } public void Gi...原创 2018-09-19 21:57:33 · 221 阅读 · 0 评论 -
设计模式(十一)建造者模式
用程序画一个小人,这在游戏程序里非常常见。现在简单一点,要求是小人要有头、身体、两手、两脚就可以了。第一版 Pen p = new Pen (Color.Yellow);Graphics gThin = pictureBox1.CreateGraphics();gThin.DrawEllipse(p,50,20,30,30); // 头gThin.DrawRectang...原创 2018-09-24 18:05:40 · 774 阅读 · 0 评论 -
设计模式(四)装饰模式
老样子,先来看一个需求:现在要求写一个可以给人搭配不同的服饰的系统,比如类似QQ、网络游戏或论坛都有的Avatar系统。怎么开发?第一个版本可能是这样的——第一版结构图:Person类:class Person{ private string name; public Person(string name){ this.name=n...原创 2018-09-18 21:24:10 · 273 阅读 · 0 评论 -
设计模式(序)浅析面向对象基本概念——转变思维 重新开始
类与实例首先,对象是一个自包含的实体,用一组可识别的特性和行为来标识。面向对象编程,英文叫Object-Oriented Programming,其实就是针对对象进行编程的意思。类,是具有相同的属性和功能的对象的抽象的集合。实例,就是一个真实的对象。而实例化就是创建对象的过程,使用new关键字来创建。如:Cat cat = new Cat();它其实做了两件事:Ca...原创 2018-09-15 00:03:48 · 320 阅读 · 0 评论 -
设计模式(三)单一职责原则、开放-封闭原则、里氏代换原则、依赖倒转原则
单一职责原则单一职责原则(SRP,single responsibility principle),字面上来看,就是功能要单一。准确来说,就一个类而言,应该仅有一个引起它变化的原因。否则,如果一个类拥有太多功能,那么这就意味着,无论任何需求要来,都需要去改变这个类,这是很糟糕的——维护麻烦、复用不可能、也缺乏灵活性。另一方面,如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的...原创 2018-09-17 23:23:05 · 543 阅读 · 0 评论 -
设计模式(十四)状态模式
不同的时间,工作状态不同。代码实现?工作类:public class Work { private int hour; public int Hour{ get{return hour;} set{hour=value;} } private bool finish = false; public bool Ta...原创 2018-09-28 22:30:15 · 304 阅读 · 0 评论