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 }
    //工厂类里有多个小工厂
  • 相关阅读:
    Java 中的悲观锁和乐观锁的实现
    乐观锁和悲观锁的区别
    理解RESTful架构
    修复Linux下curl等无法使用 Let's Encrypt 证书
    呕心沥血 AR VR 好资源分享
    linux服务器出现大量TIME_WAIT的解决方法
    Ubuntu系统 无法删除 redis-server
    Python Flask jsonify a Decimal Error
    微信小程序 订阅消息 对接详细记录
    FTP时显示500 Illegal PORT command的解决
  • 原文地址:https://www.cnblogs.com/wshn/p/10261313.html
Copyright © 2011-2022 走看看