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 }
    //工厂类里有多个小工厂
  • 相关阅读:
    关于mybatis中mapper.xmlSQL语句书写的心得
    笔记
    SpringMVC的小总结
    配置generatorConfig.xml自动生成的代码的sql书写问题
    关于SQL中的排序问题
    鼠标的change事件
    Git学习笔记 --第一章
    XHR对象
    黑马程序员——java学习6(127-151)——多线程
    黑马程序员——java学习5(107-126)——内部类,异常,包
  • 原文地址:https://www.cnblogs.com/wshn/p/10261313.html
Copyright © 2011-2022 走看看