设计模式之:简单工厂模式
2016-05-06 19:28
218 查看
简单工厂模式
简单工厂模式概述
又叫静态工厂方法模式,它定义一个具体的工厂类负责创建一些类的实例
优点
客户端不需要在负责对象的创建,从而明确了各个类的职责
缺点
这个静态工厂类负责所有对象的创建,如果有新的对象增加,或者某些对象的创建方式不同,就需要不断的修改工厂类,不利于后期的维护。
例子1:简单工厂模式代码
public
abstractclassAnimal {
public
abstract void eat();
}
public
classAnimalFactory {
private AnimalFactory(){
}
public
static AnimalcreateAnimal(String type){
if("dog".equals(type)){
return
new Dog();
}else
if("cat".equals(type)){
return
new Cat();
}else{
return
null;
}
}
}
public
classDog extendsAnimal {
@Override
public
void eat() {
// TODO Auto-generated method stub
System.out.println("狗吃肉");
}
}
public
classCat extendsAnimal {
@Override
public
void eat() {
// TODO Auto-generated method stub
System.out.println("猫吃鱼");
}
}
public
classAnimalDemo {
public
static void main(String[] args) {
// TODO Auto-generated method stub
//具体类调用
Dogd = newDog();
d.eat();
Catc = newCat();
c.eat();
System.out.println("-------------");
Animala = AnimalFactory.createAnimal("dog");
a.eat();
a= AnimalFactory.createAnimal("cat");
a.eat();
//NullPointerException
a= AnimalFactory.createAnimal("pig");
if(a !=
null){
a.eat();
}else{
System.out.println("对不起,暂时不提供这种动物");
}
}
}
运行结果:
狗吃肉
猫吃鱼
-------------
狗吃肉
猫吃鱼
对不起,暂时不提供这种动物
简单工厂模式概述
又叫静态工厂方法模式,它定义一个具体的工厂类负责创建一些类的实例
优点
客户端不需要在负责对象的创建,从而明确了各个类的职责
缺点
这个静态工厂类负责所有对象的创建,如果有新的对象增加,或者某些对象的创建方式不同,就需要不断的修改工厂类,不利于后期的维护。
例子1:简单工厂模式代码
public
abstractclassAnimal {
public
abstract void eat();
}
public
classAnimalFactory {
private AnimalFactory(){
}
public
static AnimalcreateAnimal(String type){
if("dog".equals(type)){
return
new Dog();
}else
if("cat".equals(type)){
return
new Cat();
}else{
return
null;
}
}
}
public
classDog extendsAnimal {
@Override
public
void eat() {
// TODO Auto-generated method stub
System.out.println("狗吃肉");
}
}
public
classCat extendsAnimal {
@Override
public
void eat() {
// TODO Auto-generated method stub
System.out.println("猫吃鱼");
}
}
public
classAnimalDemo {
public
static void main(String[] args) {
// TODO Auto-generated method stub
//具体类调用
Dogd = newDog();
d.eat();
Catc = newCat();
c.eat();
System.out.println("-------------");
Animala = AnimalFactory.createAnimal("dog");
a.eat();
a= AnimalFactory.createAnimal("cat");
a.eat();
//NullPointerException
a= AnimalFactory.createAnimal("pig");
if(a !=
null){
a.eat();
}else{
System.out.println("对不起,暂时不提供这种动物");
}
}
}
运行结果:
狗吃肉
猫吃鱼
-------------
狗吃肉
猫吃鱼
对不起,暂时不提供这种动物
相关文章推荐
- 简单web服务器学习总结
- 设计模式之单例模式
- maven中的依赖范围
- UIControl
- 设计模式
- 基于FPGA的飞机的小游戏
- 4. Android框架和工具之 android-async-http
- Java通过缓冲区复制一个.java文件。
- 心形图。撩妹用
- Light oj 1112 - Curious Robin Hood【单点更新】
- vsftpd:500 OOPS: vsftpd: refusing to run with writable root inside chroot ()错误的解决方法
- 面向对象思想设计原则
- 域名后面多一“点”带来的问题
- 自己搭建Wifi Pineapple Mark V
- ViewGroup2——自定义实现流式布局
- Ubuntu搭建Openstack平台(kilo)(三.glance)
- POJ 2632 Crashing Robots
- mongodb版本管理
- [bzoj4569][SCOI2016]萌萌哒
- iOS开发中数据库常用的语句