zoukankan      html  css  js  c++  java
  • 简单工厂模式

    简单工厂模式:

      工厂类负责创建的对象比较少,对于对象的创建不关心,一般在简单的场景下使用。

      简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖

    1 public abstract class Animal {
    2     public abstract void sayHello();
    3 }
    1 public class Cat extends Animal{
    2     @Override
    3     public void sayHello() {
    4         System.out.println("sayHello--Cat");
    5     }
    6 }
    1 public class Dog extends Animal {
    2     @Override
    3     public void sayHello() {
    4         System.out.println("sayHello--Dog");
    5     }
    6 }
     1 public class AnimalFactory {
     2     /**
     3      * 工厂方法:根据接收到的要哪个对象的类型再决定创建对应的对象
     4      * @param animalName 动物类型
     5      * @return 对应的动物类对象
     6      */
     7     public static Animal createAnimal(String animalType) {
     8         Animal animal = null;
     9         switch (animalType) {
    10         case "cat":
    11             animal = new Cat();
    12             break;
    13         case "dog":
    14             animal = new Dog();
    15                        break;
    16         }
    17         return animal;
    18     }
    19 }       

    1
    public class AnimalTest { 2 public static void main(String[] args) { 3 Animal animal = null; 4 //上溯造型 5 animal = AnimalFactory.createAnimal("dog");//返回dog对象 6 animal.sayHello();//结果:sayHello--Dog 7 //上溯造型 8 animal = AnimalFactory.createAnimal("cat");//返回dog对象 9 animal.sayHello();//结果:sayHello--Cat 10 } 11 }

    UML图:

    不能只满足于写完代码运行结果正确就完事,时常考虑如何让代码更加简练更加容易维护、容易扩展和复用,只有这样才可以真正得到提高 --《来自大话设计模式》
  • 相关阅读:
    关于lockkeyword
    关于多层for循环迭代的效率优化问题
    Android 面试精华题目总结
    Linux基础回想(1)——Linux系统概述
    linux源代码编译安装OpenCV
    校赛热身 Problem C. Sometimes Naive (状压dp)
    校赛热身 Problem C. Sometimes Naive (状压dp)
    校赛热身 Problem B. Matrix Fast Power
    校赛热身 Problem B. Matrix Fast Power
    集合的划分(递推)
  • 原文地址:https://www.cnblogs.com/lixianyuan-org/p/9439585.html
Copyright © 2011-2022 走看看