大话设计模式-1.简单工厂模式
来源:互联网 发布:淘宝店铺可以改几次 编辑:程序博客网 时间:2024/05/17 02:45
期末考试结束了,可以把心思用来学习了.
从网上找了好多本书,有gof的设计模式,还有一本仿照gof写的一本更易懂的设计模式,还有head first的设计模式....找到了好多..
针对我这样的 没什么逻辑思维的 选了一本 大话设计模式 作为设计模式的第一本读物 不知道会不会有第二本 最近的大部分时间就用来看这本书吧
虽然学过c++,学过java,但是写起代码来就不知道该怎么规划.其实我自己也清楚 自己顶多就是学会了 基于对象的的语言,根本谈不上面向对象,OOP编程.
让我体会书中的智慧吧..
这本书 用c#写的,我不用c# ,就尽量用 java实现书中的代码吧. 写代码是个费时费力的活.尽量自己能坚持下来. 时间不多,事情不少.Go on!
大牛们写的笔记 我是写不来的. 我觉得 学习就是一个循序渐进的过程,每个人都是从最基本的地方入手,然后慢慢思考,慢慢总结,才能体会其中的思想,
急是急不来的..
1.简单工厂模式----------> 实现 计算器
当我们需要产生计算的时候,可以先声明一个计算类,通过抽象函数 将 计算的 方法延迟到计算的子类中确定.
这么做的好处是 如果要添加一种新的运算方法 比如 乘法 开根号.....只要新增一个Operator子类,并同时修改一下工厂类就好了.
package a;public abstract class Operation {protected double a=0 ;protected double b=0 ;abstract public double GetResult() throws Exception;public double getA() {return a;}public void setA(double a) {this.a = a;}public double getB() {return b;}public void setB(double b) {this.b = b;}}
package a;public class OperatorAdd extends Operation{public double GetResult() {// TODO Auto-generated method stubdouble result=0;result=a+b;return result;}}
package a;public class OperatorDiv extends Operation {@Overridepublic double GetResult() throws Exception {// TODO Auto-generated method stubif(b==0) throw new Exception();else return a/b;}}
package a;public class OperatorMul extends Operation {@Overridepublic double GetResult() {// TODO Auto-generated method stubreturn a*b;}}
package a;public class OperatorSub extends Operation {@Overridepublic double GetResult() {double result=0;result=a-b;return result;}}
package a;public class OperatorFactory{public static Operation CreateOperation(String oper){switch(oper.charAt(0)){case '+':return new OperatorAdd();case '-':return new OperatorSub();case '*':return new OperatorMul();case '/':return new OperatorDiv();}return null;}}
package a;import java.util.Scanner;public class UI {public static void main(String []args) {// TODO Auto-generated method stubScanner in = new Scanner(System.in);double a,b;String str;System.out.println("请输入操作数1:");a=in.nextDouble();System.out.println("请输入操作数2:");b=in.nextDouble();System.out.println("请输入运算符::");str=in.next();Operation oper=OperatorFactory.CreateOperation(str);oper.setA(a);oper.setB(b);double result=0;try {result = oper.GetResult();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println("结果:"+oper.getA()+str+oper.getB()+"="+result);}}
思考: 定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。
0 0
- 大话设计模式-1.简单工厂模式
- 大话设计模式之一【简单工厂模式】
- 大话设计模式-简单工厂模式
- 大话设计模式 --- 简单工厂模式
- 大话设计模式之简单工厂模式
- 大话设计模式---简单工厂模式
- 大话设计模式笔记----简单工厂模式
- 大话设计模式之一简单工厂模式
- 大话设计模式_简单工厂模式
- 大话设计模式之简单工厂模式
- 《大话设计模式》读书笔记--简单工厂模式
- 大话设计模式--简单工厂模式
- 大话设计模式 第一章 简单工厂模式
- 大话设计模式之简单工厂模式
- 大话设计模式(一)简单工厂模式
- 大话设计模式之简单工厂模式
- 大话设计模式之--简单工厂模式
- 大话设计模式-简单工厂模式
- 黑马程序员_【总结】_集合框架知识梳理3
- Oracle11gR2 Windows 7 64bit and PL/SQL Developer排错
- 设计模式中类的关系
- mfcc学习记录
- 一个简单的在线推荐系统的实现
- 大话设计模式-1.简单工厂模式
- ACdream OJ 1099 瑶瑶的第K大
- Android_08手机联系人编码中SimpleAdapter的使用说明
- VMware Workstation工具给liunx创建共享磁盘
- IOS多线程编程之Grand Central Dispatch(GCD)介绍和使用
- gsl: rng.c:46: ERROR: failed to allocate space for rng state
- 编译错误:error C2065
- Swift
- MFC截图程序的实现(十)