博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第一次设计作业
阅读量:4624 次
发布时间:2019-06-09

本文共 4160 字,大约阅读时间需要 13 分钟。

第一次设计作业

1、要求:某系统日志记录器要求支持多种日志记录方式,如文件记录、数据库记录等;用户可以根据要求动态选择日志记录方式。使用Factory模式来设计;如果系统中增加一个日志记录方式—控制台日志记录(ConsoleLog),类图将如何改变?

1.1

代码

// 日志工厂类public abstract class logFactory {    abstract log createLog();} // 文件日志工厂类public class FilelogFactory extends logFactory {    @Override    log createlog() {        return new Filelog();    }}  // 数据库日志工厂类public class DBlogFactory extends logFactory {    @Override    log createlog() {        return new DBlog();    }}   // 日志产品类public abstract class Log {    abstract void add();    abstract void delete();    abstract void output();}  // 文本日志产品类public class Filelog extends log {    @Override    void add() {}    @Override    void delete() {}    @Override    void query() {}}  // 数据库日志产品类    public class DBlog extends log {        @Override        void add() {}        @Override        void delete() {}        @Override        void query() {}    }

加入consolelog后:

1.2

2、要求:某系统为了改进数据库操作的性能,自定义数据连接对象Connection和语句对象Statement,可针对不同类型的数据库提供不同的连接对象和语句对象;用户可以通过配置文件等方式根据实际需要动态更换系统数据库;使用Abstract Factory模式来设计。

2

代码

// 数据库抽象工厂类public abstract class DBFactory {    public abstract connection createonnection();    public abstract statement createstatement();}  // MySql数据库工厂类public class MyDBFactory extends DBFactory {    @Override    public connection createconnection() {        return new Myconnection();    }    @Override    public statement createstatement() {}        return new Mystatement();    }}// OracleSql数据库工厂类public class OracleDBFactory extends DBFactory {    @Override    public connection createconnection() {        return new Oracleconnection();    }    @Override    public statement createstatement() {}        return new Oraclestatement();    }}  // 数据库连接抽象产品类public abstract class connection {    public abstract void connection();}  // 数据库语句抽象产品类public abstract class statement {    public abstract void statement();}  // MySql数据库连接public class Myconnection extends connection {    @Override    public void connection() {}}  // MySql数据库语句public class Mystatement extends statement {    @Override    public void statement() {}}  // Oracle数据库连接public class Oracleconnection extends connection {    @Override    public void connection() {}}  // MySql数据库语句public class Oraclestatement extends statement {    @Override    public void statement() {}}

3、要求:KFC套餐是一个复杂对象,一般包括主食(如汉堡、鸡肉卷等)和饮料(如果汁、可乐等)组成部分,不同套餐有不同组成部分;KFC服务员要根据顾客要求,装配这些组成部分,构造一个完整套餐,返回给顾客;使用Builder模式来设计。

3

代码

// 套餐导演抽象类public abstract class KFCDirector {    protected KFCBuilder builder;    public KFCDirector(KFCBuilder builder) {        this.builder = builder;    }    public abstract KFCcombo construct();}  // 套餐创建者抽象类public abstract class KFCBuilder {    protected KFCcombo combo;    public KFCBuilder() {        this.combo = new combo();    }    public combo getcombo() {        return combo;    }    public abstract void buildStaple();    public abstract void buildDrink();}  // 套餐创建者具体类public class ComboABuilder extends KFCBuilder {    @Override    public void buildStaple() {}    @Override    public void buildDrink() {}}  // 套餐产品类public class combo {    public void setstaple(){}    public void getstaple(){        return combo.staple;    }    public void setdrink(){}    public void getdrink(){        return combo.drink;    }}

4、要求:游戏中的地图:包括天空、地面、背景;人物包括人体、服装、装备等组成部分,如采用Builder模式如何设计?

4

代码

// 地图导演类public class mapDirector {    private mapBuilder builder;    public mapDirector(mapBuilder builder) {        this.builder = builder;    }    public map construct() {        builder.buildSky();        builder.buildGround();        builder.buildBackground();        return builder.getMap();    }}  // 地图创建者抽象类public abstract class mapBuilder {    protected Map map;    public MapBuilder() {        this.map = new Map();    }    public Map getMap() {        return map;    }    public abstract void buildsky();    public abstract void buildground();    public abstract void buildbackground();}  // 沙漠地图创建者具体类public class DesertMapBuilder extends MapBuilder {    @Override    public void buildsky() {}    @Override    public void buildground() {}    @Override    public void buildbackground() {}}

转载于:https://www.cnblogs.com/sunminming/p/7795058.html

你可能感兴趣的文章
【心情】郁闷
查看>>
Java事务与JTA
查看>>
装饰器模式
查看>>
LR Socket 测试demo
查看>>
vue 路由用法
查看>>
poj2104 划分树 区间K大 在线 无修改
查看>>
java可变参数Varargs
查看>>
MySQL 5.7 安装完成后,首次登陆的几个问题
查看>>
Javascript笔记
查看>>
[禅悟人生]在每日的劳作中寻求充实与安宁
查看>>
跟锦数学2017年下半年 (不再更新网页版)
查看>>
Key/Value之王Memcached初探:三、Memcached解决Session的分布式存储场景的应用
查看>>
.NET基础拾遗(5)多线程开发基础
查看>>
Debug!Debug!Debug!
查看>>
python之subprocess模块详解--小白博客
查看>>
nmap扫描工具
查看>>
SQL server函数大全
查看>>
玩转JavaScript正则表达式
查看>>
Sticky Footer,完美的绝对底部
查看>>
Android动态加载——加载已安装APK中的类
查看>>