- 浏览: 885635 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (509)
- android (55)
- CSS (23)
- eclipse (25)
- Data Structes and Algorithms (53)
- J2SE (87)
- Java_面试学习_j2se (26)
- java_面试学习_非技术 (13)
- java_gui (2)
- java_设计模式 (27)
- JDBC (10)
- java_web (15)
- hibernate (5)
- Oracle (37)
- Struts2 (7)
- Word-----dos (24)
- Jbpm (3)
- java小技巧 (8)
- math (1)
- flex (12)
- WebService (4)
- 生活 (9)
- 小框架或小语言 (27)
- spring (1)
- 面试~~~软实力 (7)
- jstat的用法 (1)
- jmap (1)
- 数据链路层和传输层的流量控制区别 (1)
- shell (0)
- 财商 (1)
- javascript (0)
- js研究 (1)
- 代码收集 (0)
最新评论
-
海尔群:
http://jingyan.baidu.com/articl ...
android加密 -
完美天龙:
------------------------- ...
asm----字节码操纵 -
houniao1990:
大神,请问 string 类型 定义为 oracle的 cha ...
hibernate注解 -
JamesQian:
Line:103
f.doFilter(msg);
是否需 ...
责任链模式_过滤器模式 -
sacoole:
好评
interview--- 如何从N个数中选出最大(小)的n个数?
//注意:不用if else语句的前提是状态的流动按照一定的规律来运作,就像head first里面的糖果机,状态1:没25分钱 ----投入25分(动作)--->状态2:有25分钱,这些状态之间可以根据逻辑来判断。。。但是如果状态的流动是根据随机或者人的意愿的话,那么if/else语句不可避免 下面题目是CSDN上面抄过来的。。。。 一个假象的银行帐户管理系统中: * 帐户(Account)分为普通帐户,VIP帐户和信用卡帐户三种. * 每个帐户都可以执行取钱,存钱,注销三种操作 * 关于取钱操作的细节: 普通帐户每次取钱限额为1000元,不能透支 VIP帐户每次取钱限额为3000元,不能透支 信用卡帐户每次取钱限额为3000元,可以透支 * 另外每个帐户有四种可能的状态:新建、正常、冻结、挂失 * 帐号处于不同状态时对于上面提到的三种操作会产生影响: 新建状态时不能执行注销操作 挂失状态时不能执行存钱、取钱操作 冻结状态时不能执行存钱、取钱、注销操作 下面有一种设计。。。是我所想的。。但是不合理 interface Account { ... } class GeneralAccount implements Account { ... } class VipAccount implements Account { ... } class CreditCardAccount implements Account { ... } 不合理之处在于:我的帐户显然可以动态的进行变化,只要吝啬的我愿意多付那么一点点的服务费...但是当我的帐户开始转型时,系统无法让一个GeneralAccount自动转变为VipAccount。。。,所以用户的帐户类型应该用状态来描述,而不是抽象成类。。。 除了取钱以外的其他操作似乎都与不同类型的帐户无关 所以在设计的时候,帐户里面只要绑定取钱一个动作 interface AccountType { Money get(int amount); } class GeneralType implements AccountType { Money get(int amount) { ... } } class VipType implements AccountType { Money get(int amount) { ... } } class CreditCardType implements AccountType { Money get(int amount) { ... } } class Account { private String name; private String password; private AccountType type; Account(int typeCode) { } void changeType(int newTypeCode) { } boolean logout() { ... } boolean save(Money m) { ... } Money get(int amount) { Money result = type.get(amount); //这个动作与类型相关,所以委托类型来完成 return result; } } //====================下面是用判断还是策略模式呢?=============== 接着那个牛人分析了一下如何实现类型的初始化和类型的转换 Account(int typeCode) { setType(int typeCode); // ...other init handles } void changeType(int newTypeCode) { // do something before change type... setType(newTypeCode); // do something after change type... } private void setType(int typeCode) { // 这里假设, // 0代表普通帐户, // 1代表VIP帐户 // 2代表信用卡帐户 switch (typeCode) { case 0: type = new GeneralType(); break; case 1: type = new VipType(); break; case 2: type = new CreditCardType(); break; default: throw new AccountTypeException( "Error account type code: " + typeCode); } } ============或者=============================== 使用策略模式 当然这里也可以采用策略类来动态确定类型,比如 Account(AccountType aType) { type = aType; } void changeType(AccountType newType) { type = newType; } //状态引用类和状态类本身应该是一种强耦合的关系,所以将这种初始化的任务交给Account自己来维护是合理的,而且这样的switch or if/else语句并不冗长 .但是策略模式:由于将选择与初始化帐户类型的操作权利移交到外部的控制类中,那么控制类必定要做出同样的条件选择,而且还必须完全了解帐户类型,帐户和帐户类型之间的互相了解是合情合理的,但外部控制类是否也必须对帐户类型一清二楚就有待定夺了。。。 //接下来,那个牛人说道:其次,这里的状态只有四种,而且规则并不复杂,我们需要进行抽象或硬要添加某种模式无非是出于以下几种目的 1。过多的条件选择。。。注意,注意,“条件选择”不是重点。。。“过多的”才是重点 2。条件选择路径下的各个业务逻辑(算法)异常复杂,但通常即使是仅仅将那些令人作呕的实现逻辑提炼(重构)出来组成一些private mehtod也就够用了 3。最可能必须要采用某种策略来降低耦合的目的是因为过多的变化,如果状态的个数是不确定的,或者状态的实现是天马行空的。。。(业务人员通常精于此道),那么采取某种策略将不变与变化隔离是有必要的。 注意到:基于 "似乎不同状态的帐户在限制某些操作时,对所有的类型都采取了统一的动作 有三种状态,每种状态对应了不同的取钱操作,这里使用状态模式。。。,这里的状态只影响能不能取钱,但是怎么取钱还是要问帐户类型。。。 Account { private AccountState state; private AccountType type; Money get(int amount,AccountType type ) { return state.get(amount,type); //这里改变了 } ... } interface AccountState { boolean logout(); boolean save(Money m); Money get(int amount,AccountType type ); //如果能取钱,再委托类型来取钱 }
发表评论
-
设计模式--------享元模式
2010-11-15 14:04 1145Flyweight 是拳击比赛中的特用名词,意思是“特轻量 ... -
设计模式-------建造者模式
2010-11-10 20:38 1211状态间的自由切换 ... -
设计模式------访问者模式
2010-11-09 23:00 1025访问者模式是对迭代器模式的扩充,可以遍历不同的对象,然后执 ... -
设计模式------组合模式
2010-08-09 14:28 1292这个标题说的是一种 ... -
概念-----依赖倒置
2010-08-09 13:45 1137依赖如果不导致,就是我依赖一个具体的东西。。。这是很正常的 ... -
概念-----好莱坞原则
2010-08-09 13:29 2433好莱坞,一个让许多俊男靓女欲罢不能的地方。在通往成功的路上,有 ... -
设计模式------适配器
2010-08-09 11:07 1002//适配器模式不适合在系统设计阶段采用,没有一个系统分析师 ... -
设计模式-----Singleton单件模式
2010-08-09 09:44 1139/* 1:同步一个方法可能造成程序执行效率下降100倍。。 ... -
题目----猫叫---设计模式
2010-08-06 16:20 1246题目:猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒 要 ... -
设计模式------装饰器
2010-08-06 16:14 1063装饰模式和代理模式的 ... -
设计模式------观察者模式
2010-08-06 15:16 1277大量参考设计模式之禅 观察者---就是间谍哈,或者叫 ... -
设计模式------策略模式
2010-08-06 14:54 1006我认为核心思想是:把变化的方法也当作参数传过来 1. ... -
设计模式------模板方法模式---桥梁模式
2010-07-31 18:43 1378如果两个类的某个方法90%代码一样,怎么重用? 把不同的地方 ... -
题目-----面向对象设计题
2010-07-29 10:38 1496/*面向对象设计把握一个重要的经验:谁拥有数据,谁就对 ... -
设计模式------工厂模式
2010-07-09 13:25 1354工厂模式是一种创建型模式。。。其中创建型模式包括:单例,工 ... -
设计模式--------Facade~~外观模式~~门面
2010-07-09 11:34 1048可以看成事对多个方法的封装。。。。。对多个对象的代理。。目 ... -
设计模式-------中介者模式
2010-07-09 11:31 1248语义:类和类之间不 ... -
设计模式-----状态模式
2010-07-09 11:15 1154/** 一个类中的方法是不稳定的,他在不同的状态下需要不 ... -
设计模式-------命令模式
2010-07-09 10:23 1307重点中的重点: 把"执行者"类当中 ... -
设计模式------桥模式~bridge
2010-07-09 09:01 1021/** 语义:实现系统 ...
相关推荐
根据题目描述,本项目是一款基于Java语言开发的银行账户管理系统,作为软件工程课程设计的一部分。该系统旨在通过模拟银行账户的基本操作(如存款、取款、查询等),加深学生对Java编程语言及其在实际应用中的理解。...
### 银行管理系统开题报告关键知识点解析 #### 一、项目背景与目标 - **项目背景**:随着信息技术的迅速发展,银行系统需要适应不断变化的技术环境以提高服务效率和服务质量。当前,许多银行虽然已经实现了基本的...
1. **实验题目**:银行账户管理系统的开发。 2. **实验地点与时间**:在软件楼303进行,为期一周的时间(11月21日至11月25日)。 3. **实验目的**:通过本实验,学生将学习如何使用C++语言实现一个简单的银行账户...
【银行管理系统Python代码】是一个基于Python编程语言实现的简易银行管理软件。这个系统设计得既简单又实用,适合初学者理解和学习,同时也适用于快速搭建基本的银行账户操作模拟环境。在Python编辑器如PyCharm中,...
题目描述:设计一个银行储蓄管理系统,以菜单方式工作。 功能需求: (1) 设计一个账户类Account,包括户名、密码、电话、余额等信息。 (2) 为新用户开户。 (3) 为老用户修改信息、销户、挂失。 (4) 可以办理存取款...
题目:定义一个基类 Acount 表示所有的账户。以此为基础派生出活期账户类( Saving )、定期账户类( FixSaving )、信用卡账户类( Checking )。每种账户均需提供存( deposit )和取( withdrawal )两种方法。...
5. **用户界面**:虽然题目没有明确指出,但一个简单的银行管理系统可能包括命令行界面或图形用户界面(GUI)。Python的`input()`函数可以接收用户输入,而像`tkinter`这样的库则可以用于创建GUI。 6. **设计模式**...
题目3:银行账户管理系统“ 1.-需求+ 模拟实现一个银行账户管理系统,银行管理客户,银行可以新建客户,一个客户底下有自己的个账户或多个账户,账户可以派生借记卡账户和信用卡账户。账户可以设计共性功能如存款,...
本项目是一款基于Java语言开发的银行卡管理系统,旨在提供一个全面、高效的银行账户管理平台。这个系统可能作为软件工程或相关课程的设计实例,以帮助学生理解并实践软件开发的全过程,包括需求分析、设计、编码、...
首先,银行储蓄管理系统的核心功能包括账户管理、存款操作、取款服务、利息计算和交易记录查询等。在账户管理模块,用户可以进行开户、销户、修改个人信息等操作,系统需确保数据的安全性和准确性。存款和取款功能则...
这个系统旨在帮助用户方便地管理和跟踪他们的银行账户活动,如存款、取款、转账等基本功能。以下是对这个系统的详细分析和相关知识点的阐述: 1. **C++编程语言**:C++是一种静态类型的、编译式的、通用的、大小写...
5. **用户界面**:虽然题目未明确提及,但一个完整的银行账户管理系统通常会包含用户交互界面。这可能涉及Swing或JavaFX,让用户可以直观地进行开户、查询、转账等操作。 6. **文档编写**:项目附带的详细文档是...
银行账户信息管理系统课程设计报告 在这个课程设计报告中,我们将设计一个银行账户信息管理系统,使用 C 语言来实现。这个系统的主要功能是管理银行账户信息,包括账户信息的添加、删除、修改和查询等操作。 课程...
6. **用户界面**:虽然题目未明确提及,但一个完整的银行信息管理系统通常会有用户界面,可能采用命令行界面或图形用户界面(GUI)。对于GUI,可能会用到Qt、wxWidgets或MFC等库。 7. **多线程与并发**:考虑到银行...
在这个银行账户管理系统中,可能会定义如`Account`、`Bank`和`Customer`等类,它们分别代表账户、银行和客户。这些类将包含属性(如账号、余额、用户名等)和操作(如存款、取款、查询余额等)。 2. **类和对象**:...
C 语言课程设计报告银行账户信息管理系统 本设计报告旨在设计一个银行账户信息管理系统,使用 C 语言实现。该系统能够完成存款、取款、查询余额、查询存款记录和查询取款记录等功能。 一、课程设计目的 1. 加深对...
本次设计的题目是“银行管理系统”,该系统的目标是为模拟银行环境提供数据存储、处理和查询的功能,确保银行交易的安全、准确和高效。 1.2 要求完成的主要任务 设计的主要任务包括但不限于:理解银行业务流程,...
### 银行账户管理程序C语言代码报告 #### 一、课程设计题目与要求 ##### 1.1 设计题目 本次课程设计的主题为**银行...通过以上模块的设计与实现,可以构建一个功能完善的银行账户管理系统,满足基本的银行业务需求。
它适用于大一学习C++编程的学生,无需使用复杂的数据库系统即可实现基本的银行账户管理功能。 #### 二、程序结构分析 1. **主菜单函数 `mainmenu()`**: - 显示主菜单界面。 - 提供三个选项:创建新账户、操作...