大话设计模式5 模版模式 外观模式
来源:互联网 发布:maka是什么软件 编辑:程序博客网 时间:2024/04/30 14:00
1.模版模式
今天看到了一个很不错的模式:模版模式,由父类定义好逻辑结构,但是其中一些具体的细节留给子类去实现。使子类可以不必改变具体的逻辑结构,就可以重新定义细节。
一个关于考试答题的简单例子:
abstract class TestPaper{ public void question1() { System.out.println("Question1 Answer:"+answer1()); } public abstract String answer1(); public void question2() { System.out.println("Question2 Answer:"+answer2()); } public abstract String answer2();}class StudentA extends TestPaper{ @Override public String answer1() { // TODO Auto-generated method stub return "A"; } @Override public String answer2() { // TODO Auto-generated method stub return "A"; }}class StudentB extends TestPaper{ @Override public String answer1() { // TODO Auto-generated method stub return "B"; } @Override public String answer2() { // TODO Auto-generated method stub return "B"; }}public class Template { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub StudentA stuA=new StudentA(); stuA.question1(); stuA.question2(); StudentB stuB=new StudentB(); stuB.question1(); stuB.question2(); }}
对同样的一套试卷回答问题,stuA和stuB可以按照试题顺序回答不同的答案。
2.外观模式
给子系统中一组接口提供统一的界面。
据说在维护大型复杂系统时,此模式很有用,通过对复杂系统中的接口分类,借助外观模式,能够使接口简洁明了。
感觉和代理模式有点像,但可能一个侧重于统一提供接口;一个侧重于使两个模块分离,不直接交互吧。
一个关于投资的例子,将股票,国债,房地产的buy,sell接口统一起来操作。
class Stock{ public void buy() { System.out.println("Stock buy"); } public void sell() { System.out.println("Stock sell"); }}class NationalDebt{ public void buy() { System.out.println("NationalDebt buy"); } public void sell() { System.out.println("NationalDebt sell"); }}class Realty{ public void buy() { System.out.println("Realty buy"); } public void sell() { System.out.println("Realty sell"); }}public class Facade { Stock mStock; NationalDebt mNationalDebt; Realty mRealty; public Facade() { mStock=new Stock(); mNationalDebt=new NationalDebt(); mRealty=new Realty(); } public void buy() { mStock.buy(); mNationalDebt.buy(); mRealty.buy(); } public void sell() { mStock.sell(); mNationalDebt.sell(); mRealty.sell(); } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Facade facade=new Facade(); facade.buy(); facade.sell(); }}
- 大话设计模式5 模版模式 外观模式
- 大话设计模式-外观模式
- 大话设计模式-外观模式
- 大话设计模式----外观模式
- 大话设计之外观模式
- 大话设计模式之外观模式
- 大话设计模式之-----外观模式
- 大话设计模式_外观模式
- 大话设计模式之外观模式
- 大话设计模式之外观模式
- 大话设计模式之外观模式
- 大话设计模式十二:外观模式(facade)
- 《大话设计模式》-- 11.外观模式
- 大话设计模式之外观模式
- 大话设计模式之外观模式
- 大话设计模式—外观模式
- <<大话设计模式>>之外观模式
- 大话设计模式12----外观模式
- Androi客户端与php服务器
- 创建一个线程用哪个好?--CreateThread._beginthread.AfxBeginThread比较
- 怎样练习一万个小时
- 【mysql】修改mysql5.5默认编码
- IOS添加自定义字体
- 大话设计模式5 模版模式 外观模式
- 一次插入多条记录的SQL语句
- 微笑的Esp
- kd树学习
- 技术贴:如何跟刚认识的女孩发短信
- ROS在ARM上的编译
- asp.net Context.User.Identity.Name说明
- Android通过PHP连接MySQL(传值查询)
- 工作流审批平台-辅助功能-角色管理