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图:

    不能只满足于写完代码运行结果正确就完事,时常考虑如何让代码更加简练更加容易维护、容易扩展和复用,只有这样才可以真正得到提高 --《来自大话设计模式》
  • 相关阅读:
    Codeforces 1131 C. Birthday-暴力 (Codeforces Round #541 (Div. 2))
    Codeforces 1131 B. Draw!-暴力 (Codeforces Round #541 (Div. 2))
    DP之背包经典三例
    博弈规律综概
    腾讯面试题:杯子质量(最优查找)
    洛谷P1308——单词统计
    AtCoder Regular Contest 069 D
    Codeforces 782C. Andryusha and Colored Balloons 搜索
    Codeforces 799D. String Game 二分
    Codeforces 767B. The Queue 模拟题
  • 原文地址:https://www.cnblogs.com/lixianyuan-org/p/9439585.html
Copyright © 2011-2022 走看看