Java设计模式(二):工厂方法模式

我们已经知道了工厂模式的弊端,那么怎么解决呢?在工厂模式中,我们用一个工厂类就创建了多个对象,那么我们是否可以对每一种笔都创建工厂类呢?很明显是可以的。

创建父类Pen,让BellPen、BrushPen、Pencil继承Pen;同理,我们那可以创建父类PenFactory,并定义抽象方法来创建各工厂,让BellPenFactory、BrushPenFactory、PencilFactory继承PenFactory

Pen

pen.java

public abstract class Pen {
    public abstract void write();
}

子类:BellPen

public class BellPen extends Pen {
    @Override
    public void write() {
        System.out.println("圆珠笔");
    }
}

BrushPen.java

public class BrushPen extends Pen {
    @Override
    public void write() {
        System.out.println("毛笔");
    }
}

Pencil.java

public class Pencil extends Pen {
    @Override
    public void write() {
        System.out.println("铅笔");
    }
}

PenFactory.java

父类PenFactory.java

public abstract class PenFactory {
    public abstract Pen createPen();
}

BellPenFactory.java

public class BellPenFactory extends PenFactory {
    @Override
    public Pen createPen() {
        return new BellPen();
    }
}

BrushPenFactory.java

public class BrushPenFactory extends PenFactory {

    @Override
    public Pen createPen() {

        return new BrushPen();
    }

}
public class PencilFactory extends PenFactory {

    @Override
    public Pen createPen() {

        return new Pencil();
    }
}

测试工厂类

public class FactoryTest {

    public static void main(String[] args) {
         PenFactory factory ;

         factory = new BellPenFactory();
         BellPen bellPen = (BellPen) factory.createPen();
         bellPen.write();

         factory = new BrushPenFactory();
         BrushPen brushPen = (BrushPen) factory.createPen();
         brushPen.write();

         factory = new PencilFactory();
         Pencil pencil = (Pencil) factory.createPen();
         pencil.write();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值