正所谓,“旱的旱死,涝的涝死”,在这个充满竞争的编程界,我们似乎总是忙于解决bug和优化算法,以至于个人生活常常被忽略。但别担心,今天,我们要用一种独特的方式,解决这个“问题”。
那么?你想要一个什么样的对象呢?
public class Girlfriend {
// 基本属性
private String name; // 名字
private int age; // 年龄
private String hobby; // 爱好
// 构造函数
public Girlfriend(String name, int age, String hobby) {
this.name = name;
this.age = age;
this.hobby = hobby;
}
// 唱歌的方法
public void sing() {}
// 跳舞的方法
public void dance() {}
}
恭喜你,经历心仪的对象有了,那怎么带她回家呢?
public class GirlfriendTest {
public static void main(String[] args) {
// 创建一个女朋友对象
Girlfriend girlfriend = new Girlfriend("Alice", 25, "Reading");
// 显示女朋友信息
System.out.println(girlfriend);
// 让女朋友唱歌
girlfriend.sing();
// 让女朋友跳舞
girlfriend.dance();
// 让女朋友按摩
girlfriend.massage();
}
有的人可能不愿意只有这一个对象,想要冰冷的和火辣的对象都尝试一下,而有些人呢,可能像小编一样,想要给身边的朋友和粉丝都分配“几个”,这个时候呢,就让大家跟我来一起创建个“女朋友工厂”,来实现大家的需求。
工厂模式简介
工厂模式是一种创建型设计模式,它定义了一个创建对象的接口,但让子类决定要实例化的类是哪一个。工厂方法让类的实例化推迟到子类中进行。忽略定义的阶段,只专注于获取和使用。
创建“女朋友”的工厂
在Java中,我们可以创建一个简单的工厂类,用于生成不同类型的“女朋友”对象。这里,我们将“女朋友”抽象为一个接口,然后实现几个不同的具体类。
定义“女朋友”接口
public interface Girlfriend {
void giveGift();
void goOut();
}
实现不同的“女朋友”类
public class TechGirlfriend implements Girlfriend {
@Override
public void giveGift() {
System.out.println("Giving a tech gadget.");
}
@Override
public void goOut() {
System.out.println("Going to a tech conference.");
}
}
public class SportsGirlfriend implements Girlfriend {
// ... 类似的方法实现
}
// 可以继续添加更多的实现
创建工厂类
public abstract class GirlfriendFactory {
public abstract Girlfriend createGirlfriend();
}
public class TechGirlfriendFactory extends GirlfriendFactory {
@Override
public Girlfriend createGirlfriend() {
return new TechGirlfriend();
}
}
public class SportsGirlfriendFactory extends GirlfriendFactory {
// ... 类似的方法实现
}
使用工厂模式
public class FactoryDemo {
public static void main(String[] args) {
GirlfriendFactory techFactory = new TechGirlfriendFactory();
Girlfriend techGirlfriend = techFactory.createGirlfriend();
techGirlfriend.giveGift();
techGirlfriend.goOut();
// 可以继续使用其他工厂生成不同类型的女朋友对象
}
}
通过上述示例,我们可以看到工厂模式如何帮助我们以一种灵活和可扩展的方式来创建对象。以后没有女朋友,就给自己new一个工厂。