《大话设计模式》——简单工厂模式1
2016-02-20 15:11
288 查看
之前的编程一般都是写一个个的方法,然后调用,自我感觉也还行,但是这不是面向对象编程!
为什么用类代替方法?
方法是单个独立地,顶多算是结构化编程。面向对象编程:封装、多态、继承、抽象。
面向对象编程:类、封装、多态、继承。
目标:易于维护、扩展、复用、灵活性好、降低耦合度。
手段:业务的封装:让业务逻辑与界面逻辑分开,降低耦合度。耦合度低了才易于维护和扩展。
简单工厂模式的关键是:
1、父类子类间的继承;
2、创建一个子类,复制给父类对象;
3、虚函数 重写。
缺点:只是解决了各个子类对象的创建问题,扩展时总是需要修改工厂类。
为什么用类代替方法?
方法是单个独立地,顶多算是结构化编程。面向对象编程:封装、多态、继承、抽象。
面向对象编程:类、封装、多态、继承。
目标:易于维护、扩展、复用、灵活性好、降低耦合度。
手段:业务的封装:让业务逻辑与界面逻辑分开,降低耦合度。耦合度低了才易于维护和扩展。
简单工厂模式的关键是:
1、父类子类间的继承;
2、创建一个子类,复制给父类对象;
3、虚函数 重写。
缺点:只是解决了各个子类对象的创建问题,扩展时总是需要修改工厂类。
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace WindowsFormsApplication1 { public class Operation { private double _Num1=0; private double _Num2=0; public double Num1 { get { return _Num1; } set { _Num1 = value; } } public double Num2 { get { return _Num2; } set { _Num2 = value; } } public virtual double GetResult() { double result=0; return result; } } class OperationAdd : Operation { public override double GetResult() { return Num1 + Num2; } } class OperationSub : Operation { public override double GetResult() { return Num1 - Num2; } } class OperationMul : Operation { public override double GetResult() { return Num1 * Num2; } } class OperationDiv : Operation { public override double GetResult() { if (Num2 == 0) throw new Exception("除数不能为0。"); return Num1 / Num2; } } public class OperationFactory { public static Operation createOperation(String operation) { Operation oper = null; switch (operation) { case "+": oper = new OperationAdd(); break; case "-": oper = new OperationSub(); break; case "*": oper = new OperationMul(); break; case "/": oper = new OperationDiv(); break; } return oper; } } }
相关文章推荐
- RSA非对称加密网卡MAC
- Android线程三、Handler
- [从头学数学] 第99节 百分数(二)
- 深度学习系列(3.1)——神经网络-感知机(Perceptrons)
- windows下用cygwin编译android版ijkplayer
- HDOJ 1106 排序
- 面向接口编程详解(二)——编程实例
- 面向接口编程详解(三)
- CSS基础笔记
- Eclipse如何使用多个console?
- juce教程003
- php7数组排序与trait使用
- oracle中split的使用
- 以访客至上的网页设计(三)
- 双向循环链表操作
- 一些有趣的erlang项目
- android Camera 如何判断当前使用的摄像头是前置还是后置
- 使用Intellij idea 创建maven项目 没有默认创建webapp相关目录
- 矩阵相乘优化
- apache日志