会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 133413个问题
JAVA 全系列/第一阶段:AI驱动的JAVA编程/变量、数据类型、运算符 38178楼

'''使用工厂模式、单例模式实现如下需求:
(1) 电脑工厂类 ComputerFactory 用于生产电脑 Computer。工厂类使用单例模式,也就是说只能有一个工厂对象。
(2) 工厂类中可以生产各种品牌的电脑:联想、华硕、神舟
(3) 各种品牌的电脑使用继承实现:
(4) 父类是 Computer 类,定义了 calculate 方法
(5) 各品牌电脑类需要重写父类的 calculate'''

class ComputerFactory:  # 工厂模式、单例模式组合
    __obj = None  # 类属性,类内私有
    __init_flag = True

    def __new__(cls, *args, **kwargs):  # 单例模式新建,只新建一次
        if cls.__obj == None:
            cls.__obj = object.__new__(cls)
        return cls.__obj

    def __init__(self):  # 单例模式初始化,只初始化一次
        if ComputerFactory.__init_flag:
            print("模具初始化完成单例模式初始化,只初始化一次")
            ComputerFactory.__init_flag = False

    def creat_computer(self, brand):  # 工厂模式
        if brand == "联想":
            return Lenovo()  # 调用Lenovo类,需要传参
        elif brand == "华硕":
            return AUAS()
        elif brand == "神州":
            return HASEE()
        else:
            return print("未知品牌,无法创建!")

class Computer:  # 定义父类Computer
    def __init__(self, name):
        self.name = name

    def calculate(self):  # 定义父类Computer的calculate方法
        print("生产该电脑")


class Lenovo(Computer):  # 定义Levono类,继承父类Computer
    def __init__(self, name):  # 显式继承父类的构造函数
        Computer.__init__(self, name)

    def calculate(self):  # 重写calculate方法
        print('生产{0}'.format(self.name))


class AUAS(Computer):  # 定义AUAS类,继承父类Computer
    # 当子类与父类构造函数相同,默认继承
    def calculate(self):
        print('生产{0}'.format(self.name))


class HASEE(Computer):  # 定义HASEE类,继承父类Computer
    def calculate(self):
        print('生产{0}'.format(self.name))


# 子类AUAS类运行测试1
s1 = HASEE("小米")
s1.calculate()
print("--------------------------------------------------------")
# 组合模式运行测试2
c1 = ComputerFactory()
x1 = c1.creat_computer("华硕")
x2 = c1.creat_computer("神州")
x3 = c1.creat_computer("联想")
print(x1)
print(x2)
print(x3)
print("--------------------------------------------------------")
c2 = ComputerFactory()
print(c1)
print(c2)

运行报错是一个原因,第二是

s1 = HASEE("小米")

这行代码,给神舟传小米为什么海内输出结果;我对单例模式还有工厂模式看了好几遍。还是不懂

image.png

Python 全系列/第一阶段:Python入门/面向对象 38179楼

webdemo.zip

老师,为什么我的不会显示自定义异常, 以及也不会自动跳转错误页面,不管密码输入对还是错,一直都是在login页面。另外看到教程db.properties没有加useSSL=false不会报错,但我的会报错,必须得加上才行。。

JAVA 全系列/第六阶段:JavaWeb开发/Web实战案例 38181楼
WEB前端全系列/第二阶段:JavaScript编程模块/面向对象编程 38182楼
Python 全系列/第三阶段:Python 网络与并发编程/网络通信 38183楼
Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/虚拟环境 38185楼
Python 全系列/第三阶段:Python 网络与并发编程/并发编程 38188楼
JAVA 全系列/第一阶段:AI驱动的JAVA编程/飞机大战小项目训练 38189楼

运行出来,年龄相等的情况下不按照字母顺序排序呢?

package 容器;

import java.util.Objects;

public class Users implements Comparable<Users>{
   private String username;
   private int userage;

    public Users(String username, int userage) {
        this.username = username;
        this.userage = userage;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Users users = (Users) o;
        return userage == users.userage &&
                Objects.equals(username, users.username);
    }

    @Override
    public int hashCode() {
        return Objects.hash(username, userage);
    }

    public Users() {
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public int getUserage() {
        return userage;
    }

    public void setUserage(int userage) {
        this.userage = userage;
    }

    @Override
    public String toString() {
        return "Users{" +
                "username='" + username + '\'' +
                ", userage=" + userage +
                '}';
    }

    //定义比较规则
    //正数:大,  负数:小,  0:相等
    @Override
    public int compareTo(Users o) {
        if (this.userage>o.getUserage()){
            return 1;
        }
        if (this.username==o.getUsername()){
            return this.username.compareTo(o.getUsername());
        }
        return -1;
    }

}

System.out.println("==================");
Set<Users> set2=new TreeSet<>();
Users u=new Users("wzx",22);
Users u2=new Users("jxm",18);
Users u3=new Users("lyx",18);
Users u4=new Users("yj",18);
set2.add(u);
set2.add(u2);
set2.add(u3);
set2.add(u4);
for (Users users:set2){
    System.out.println(users);
}


18.png

JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器(旧) 38190楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637