设计模式_简单工厂模式概述和使用
来源:互联网 发布:新装系统无法连接网络 编辑:程序博客网 时间:2024/06/05 20:38
简单工厂模式概述又叫静态工厂方法模式,它定义一个具体的工厂类负责创建一些类的实例优点客户端不需要在负责对象的创建,从而明确了各个类的职责缺点这个静态工厂类负责所有对象的创建,如果有新的对象增加,或者某些对象的创建方式不同,就需要不断的修改工厂类,不利于后期的维护设计模式:经验总结。A:创建型创建对象B:结构型对象的组成C:行为型对象的功能创建型模式:1:简单工厂模式2:工厂方法模式3:设计模式举例:我要建立一个(创建型),豪华大别墅有泳池、停机场(结构型),用来居住(行为型)。
测试类AnimalDemo
package cn.itcast_01;public class AnimalDemo {public static void main(String[] args) {// 具体类调用Dog d = new Dog();d.eat();Cat c = new Cat();c.eat();System.out.println("--------");// 工厂有了后,通过工厂给造// Dog dd = AnimalFactory.createDog();// Cat cc = AnimalFactory.createCat();// dd.eat();// cc.eat();// System.out.println("--------");// 工厂改进后Animal a = AnimalFactory.createAnimal("dog");a.eat();a = AnimalFactory.createAnimal("cat");a.eat();// NullPointerExceptiona = AnimalFactory.createAnimal("pig");if(a!=null){a.eat();}else{System.out.println("对不起,暂时不提供应动物");}System.out.println("--------");}}
工厂类AnimalFactory
package cn.itcast_01;public class AnimalFactory {private AnimalFactory() {}// public static Dog createDog() {// return new Dog();// }//// public static Cat createCat() {// return new Cat();// }public static Animal createAnimal(String type) {if ("dog".equals(type)) {return new Dog();} else if ("cat".equals(type)) {return new Cat();} else {return null;}}}
抽象类Animal
package cn.itcast_01;public abstract class Animal {public abstract void eat();}
具体类Dog
package cn.itcast_01;public class Dog extends Animal {@Overridepublic void eat() {System.out.println("狗吃肉");}}
具体类Cat
package cn.itcast_01;public class Cat extends Animal {@Overridepublic void eat() {System.out.println("猫吃鱼");}}
0 0
- 设计模式_简单工厂模式概述和使用
- 设计模式_工厂方法模式的概述和使用)
- 设计模式-简单工厂模式概述和使用-接口
- 设计模式_Java_简单工厂模式概述和使用
- 设计模式_模版设计模式概述和使用
- 设计模式-工厂方法模式的概述和使用-接口
- 设计模式_Java_工厂方法模式的概述和使用
- 大话设计模式_简单工厂模式
- 设计模式_简单工厂模式
- 设计模式02_简单工厂模式
- 设计模式_简单工厂模式
- 1.设计模式_简单工厂模式
- java设计模式_简单工厂模式
- 设计模式_简单工厂模式
- 设计模式_简单工厂模式
- 设计模式_简单工厂模式(2)
- 设计模式_装饰模式概述和使用
- php设计模式_简单工厂
- ubuntu下Keras中神经网络可视化模块keras.utils.visualize_util安装配置方法
- 机器学习笔记(2)----“没有免费的午餐”定理
- 四大组件 广播机制之Broadcast
- Permission denied: user=dr.who, access=READ_EXECUTE, inode="/tmp":root:supergroup:drwx------
- springmvc-学习总结-注解
- 设计模式_简单工厂模式概述和使用
- 解决本地访问MySql数据库出现“Can't get hostname for your address”错误
- 二叉树的三种非递归遍历
- express入门
- 根目录下的主要目录的作用
- Linux之用户管理
- 给大学生的几条建议
- 【BZOJ 3196】[Tyvj 1730]二逼平衡树
- java.lang.NoClassDefFoundError: org/apache/commons/lang/exception/NestableRuntimeException