zoukankan      html  css  js  c++  java
  • 工厂实际模式

    工厂模式:(普通工厂模式,多个工厂方法模式,静态工厂方法模式)在面向对象程序设计中,工厂通常是一个用来创建其他对象的对象。工厂模式根据不同的参数来实现不同的分配方案和创建对象。在工厂模式中,我们创建对象时不会暴露创建对象逻辑,并且是通过使用一个共同接口来指向新创建的对象。

    1.普通工厂模式:
    // 二者共同的接口
    public interface Human{
    public void eat();
    public void sleep();
    public void beat();
    }

    // 创建实现类 Male
    public class Male implements Human{
    public void eat(){
    System.out.println("Male can eat.");
    }
    public void sleep(){
    System.out.println("Male can sleep.");
    }
    public void beat(){
    System.out.println("Male can beat.");
    }
    }
    //创建实现类 Female
    public class Female implements Human{
    public void eat(){
    System.out.println("Female can eat.");
    }
    public void sleep(){
    System.out.println("Female can sleep.");
    }
    public void beat(){
    System.out.println("Female can beat.");
    }
    }

    // 创建普通工厂类
    public class HumanFactory{
    public Human createHuman(String gender){
    if( gender.equals("male") ){
    return new Male();
    }else if( gender.equals("female")){
    return new Female();
    }else {
    System.out.println("请输入正确的类型!");
    return null;
    }
    }
    }

    // 工厂测试类
    public class FactoryTest {
    public static void main(String[] args){
    HumanFactory factory = new HumanFactory();
    Human male = factory.createHuman("male");
    male.eat();
    male.sleep();
    male.beat();
    }
    }

    2.多个工厂方法模式
    // 多个工厂方法
    public class HumanFactory{
    public Male createMale() {
    return new Male();
    }
    public Female createFemale() {
    return new Female();
    }
    }

    // 工厂测试类
    public class FactoryTest {
    public static void main(String[] args){
    HumanFactory factory = new HumanFactory();
    Human male = factory.createMale();
    Human female = factory.createFemale();
    male.eat();
    male.sleep();
    male.beat();
    female.eat();
    female.sleep();
    female.beat();
    }
    }

    静态工厂方法模式:省去创建工厂实例,直接通过工厂类调用静态方法实现实例化
    // 多个工厂方法
    public class HumanFactory{
    public static Male createMale() {
    return new Male();
    }
    public static Female createFemale() {
    return new Female();
    }
    }

    // 工厂测试类
    public class FactoryTest {
    public static void main(String[] args){
    Human male = HumanFactory.createMale();
    male.eat();
    male.sleep();
    male.beat();
    }
    }

  • 相关阅读:
    适用于 Laravel 的内部收单模块
    适用于 Laravel API 的签名看守器
    适用于 Laravel 的百度搜索推送
    适用于Yii2的千万级数据秒分页
    PostMan 代理的一个大坑
    PHP 各种金融利息的计算方法
    软件工程之UML建模课
    Windows 通过 cmd 得到域名的dns
    在windows下,通过git-bash里的ssh,远程登陆虚拟机里的linux
    Java常见缩写
  • 原文地址:https://www.cnblogs.com/Jason-MLiu/p/8406553.html
Copyright © 2011-2022 走看看