创建型设计-工厂模式

    

    声明一下:本文的文字多数文字都是来自网上,只有例子是自己写的。因为自我感觉还没有能力能够系统的解释一个模式,已经有现成的比较完善的说明,就不重复造轮子哈。


    工厂设计模式是创建型设计模式之一,在传统变成方式中,有很多使用new 关键字来创建对象,这种创建方式造成了对象之间耦合性强,不宜修改修改,而工厂设计模式是采用接口的方式实现对象的简历,这样我们在变成不在世面向某一个对象儿进行变成,而变成了面向接口编程。

工厂设计包含:

1、抽象工厂角色:这是工厂方法模式的核心,它与应用程序无关。是具体工厂角色必须实现的接口或者必须继承的父类。在java中它由抽象类或者接口来实现。
2、具体工厂角色:它含有和具体业务逻辑有关的代码。由应用程序调用以创建对应的具体产品的对象。在java中它由具体的类来实现。
3、抽象产品角色:它是具体产品继承的父类或者是实现的接口。在java中一般有抽象类或者接口来实现。
4、具体产品角色:具体工厂角色所创建的对象就是此角色的实例。在java中由具体的类来实现。


具体代码实现:

工厂接口:

public interface WorkFactory {
    Work getWork();
}
产品接口:
public interface Work {
    void doWork();
}

工厂实现1:

public class StudentFactory implements WorkFactory{
    @Override
    public Work getWork() {
        return new StudentWrokImpl();
    }
}
具体实现2:

public class TeackerFactory implements WorkFactory {
    @Override
    public Work getWork() {
        return new TeacherWorkImpl();
    }
}
产品实现1:

public class StudentWrokImpl implements Work {
    @Override
    public void doWork() {
        System.out.println("学生,写作业!");
    }
}

实现2:

public class TeacherWorkImpl implements Work {
    @Override
    public void doWork() {
        System.out.println("教师审批作业!");
    }
}


Client:

public class main {
    public static void main(String[] args) {
        WorkFactory student=new StudentFactory();
        student.getWork().doWork();
        WorkFactory teacher =new TeackerFactory();
        teacher.getWork().doWork();
    }
}


输出结果:

学生,写作业!
教师审批作业!

工厂模式优缺点:
优点:克服了简单工厂违背开放-封闭原则的缺点,又保留了封装对象创建过程的优点,降低客户端和工厂的耦合性。
缺点:每增加一个产品,相应的也要增加一个子工厂,加大了额外的开发量。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值