zoukankan      html  css  js  c++  java
  • 设计模式——工厂模式

    普通工厂模式 若干接口+若干实现类+一个工厂类+测试类

    //首先定义一个接口
    1
    public interface Zoo { //动物接口 2 void Wlak();//每个动物都能有自己移动的方式 3 void Eate();//每个动物都由自己吃饭的方式 4 }
    //若干实现类 Dog
     public class Dog implements Zoo {//Dog实现Zoo
    2 public void Wlak() { 3 System.out.println("Dog.wlak()"); 4 5 } 6 public void Eate() { 7 System.out.println("Dog.eate()"); 8 } 9 }
    //若干实现类 Cat
    1
    public class Cat implements Zoo{//Cat实现Zoo 2 3 @Override 4 public void Wlak() { 5 System.out.println("Cat.wlak()"); 6 7 } 8 9 @Override 10 public void Eate() { 11 System.out.println("Cat.eate()"); 12 13 } 14 }
    // 工厂类
    1
    public class Animals { 2 public Zoo returnAnimal(String name) { 3 if("Cat".equals(name)) { 4 return new Cat(); 5 }else { 6 return new Dog(); 7 } 8 9 } 10 11 }
    //这里可能出现字符串不匹配的情况,从而导致实例不能正常被创建,为了解决这个问题下面会单独介绍
    //最后,写一个测试类,用于实现目标功能

    public class Demo1 {

    public static void main(String[] args) {
    
    

    // TODO Auto-generated method stub

    
    

    Animals animals=new Animals();

    
    

    Zoo cat=animals.returnAnimal("Cat");

    
    

    cat.Eate();

    
    

    cat.Wlak();

    
    

    Zoo dog=animals.returnAnimal("Dog");

    
    

    dog.Eate();

    
    

    dog.Wlak();

    }

    }

    
    

    //设计模式,普通工厂模式,定义一个接口用于保存工厂产品的共同特性,实现产品接口,用于构造产品,实现不同产品的不同细节

    
    

    2.为了解决上面字符串参数传入错误,不能正常创建实例时,采用下面的方法,更改工厂类。

    1 public class Animals {
    2     public Zoo creatDog() {
    3         return new Dog();
    4     }
    5     public Zoo creatCat() {
    6         return new Cat();
    7     }
    8 
    9 }
    //工厂类里有多个小工厂
  • 相关阅读:
    移动硬盘插入电脑后检测到却不显示如何解决?
    Js求角度、三角形、弧度计算
    Python之常用模块(一)
    PostgreSQL中的MVCC 事务隔离
    520了,用32做个简单的小程序
    “TensorFlow 开发者出道计划”全攻略,玩转社区看这里!
    MySQL 返回未包含在group by中的列
    《Mysql日志备份/恢复》大型详细攻略两万字图解(史上最详细,多图)
    年轻就该多尝试,教你20小时Get一项新技能
    Flutter开发指南之理论篇:Dart语法05(单线程模型,事件循环模型,Isolate)
  • 原文地址:https://www.cnblogs.com/wshn/p/10261313.html
Copyright © 2011-2022 走看看