第一次设计作业

第一次设计作业

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值