• 工厂模式


    public interface Factory {
        public LeiFeng CreateLeiFeng();
    }
    public class LeiFeng {
        public void sweep() {
            System.out.println("sweep");
        }
    
        public void wash() {
            System.out.println("wash");
        }
    
        public void buyRice() {
            System.out.println("buy rice");
        }
    }
    /**
     * Created by tian on 16-5-29.
     * <p>
     * 定义一个用于创建对象的接口,让子类决定实例化哪一个对象。工厂方法使一个类的实例化延迟到其子类
     * 工厂方法模式实现时,客户端需要决定实例化哪一个工厂来实现运算类,选择判断的问题还是存在的,
     * 也就是说,工厂方法把简单工厂的内部逻辑判断移到了客户端代码来进行。想要增加新功能,原来是修改工厂类,
     * 现在是修改客户端。
     */
    public class Main {
        public static void main(String[] args) {
            //简单工厂模式
            LeiFeng studentA = SimpleFactory.CreateLeiFeng("xuesehng");
            LeiFeng zhiyuanzhe = SimpleFactory.CreateLeiFeng("zhiyuanzhe");
            //工厂模式
            Factory factory = new UnderGraduateFactory();
            LeiFeng xuesheng = factory.CreateLeiFeng();
        }
    }
    /**
     * Created by tian on 16-5-29.
     * //简单工厂的实现方法
     */
    public class SimpleFactory {
        public static LeiFeng CreateLeiFeng(String type){
            LeiFeng leiFeng = null;
            switch (type){
                case "xuesheng":
                    leiFeng = new UnderGraduate();
                    break;
                case "zhiyuanzhe":
                    leiFeng = new Volunteer();
            }
            return leiFeng;
        }
    }
    public class UnderGraduate extends LeiFeng{
    
    }
    public class UnderGraduateFactory implements Factory {
        @Override
        public LeiFeng CreateLeiFeng() {
            return new UnderGraduate();
        }
    }
    public class Volunteer extends LeiFeng {
    }
    public class VolunterFactory implements Factory{
    
        @Override
        public LeiFeng CreateLeiFeng() {
            return new Volunteer();
        }
    }
  • 相关阅读:
    我的学习之路_第十二章_多线程
    我的学习之路_第十一章_字符流
    我的学习之路_第十章_IO流
    我的学习之路_第九章_File类,递归
    cordova的安装
    webapp之初次接触cordova
    mac自带终端常用命令(我自己经常会用到的)
    AJAX初识
    前端适配之细说rem(网易的移动端页面布局做法)
    移动端网页开发三(纠结适配的那些年)
  • 原文地址:https://www.cnblogs.com/benniaoxuefei/p/5540496.html
Copyright © 2020-2023  润新知