public class TestThread {
public static void main(String[] args){ Runnable1 r1 = new Runnable1(); //阻塞式执行,先执行完run()方法 ,再向下执行 //r1.run(); //在线程中执行,与main thread交替执行 Thread t = new Thread( r1); t.start(); for(int i=0; i<100; i++){ System.out.println("Main Thread" + i); } } } class Runnable1 implements Runnable{ public void run(){ for(int i=0; i<100; i++){ System.out.println("Runnable1" + i); } } } |
接口的作用对于很多新手来说很不容易理解,我给大家举个例子。 接口只是一个规范,所以里面的方法都是空的。 假如我开了一个宠物粮店,声明所有宠物都可以来我这里买粮食,这就相当于一个接口, public interface PetRestaurant { public void buy(); } 当一只狗看到了,知道自己是宠物,所以它去实现这个接口 public class DogPet implements PetRestaurant { @Override public void buy() { System.out.println("我是狗,我要买狗粮"); } } 当一只猫看到了,知道自己也是宠物,所以也去实现这个接口 public class CatPet implements PetRestaurant { @Override public void buy() { System.out.println("我是猫,我要买猫粮"); } } 当狗和猫来我的店之前,我是不知道他们到底是什么,但是当他们来到我的店,我就知道一个要猫粮食,一个要狗粮食。因为他们都实现了 我这个接口,都可以买。下面这个类相当于一个接待顾客的类,即店小二,他接待所有实现了我这个宠物店接口的动物,传进来一个PetRestaurant 类型的宠物,注意,这个PetRestaurant 是接口 public class test { public void buy(PetRestaurant pet) { pet.buy(); } } 好了,这个时候我这个老板出现了,我可以给他们卖粮食了,相当于测试类 public class Tests { public static void main(String[] args) { PetRestaurant dog = new DogPet(); //实例化一个狗,相当于把狗顾客实例化 PetRestaurant cat = new CatPet();//实例化一个猫,相当于把猫顾客实例化 test t = new test(); //实例化一个店小二 t.buy(cat); //把猫交给店小二 t.buy(dog); //把狗交给店小二 } } 这样运行的结果就是 我是猫,我要买猫粮 我是狗,我要买狗娘 你知道吗,整个过程我这个店主其实根本不知道来的到底是猫是狗还是其他什么,我只要有一个店小二,把这些来的不知什么动物都全部交给店小二,店小二就知道怎么去卖了,因为这些狗啊猫啊都实现了我这个宠物店的接口,而店小二就负责接待所有实现了我这个接口的动物。这就有一个好处,假如明天来了一头小猪,只要它实现了我这个接口,我只管交给店小二处理就OK了,我这个店小二根本不需要变化,我这个店主也只需要实例化一下这个动物就OK 你想,假如没有接口,会怎么办,来一个猫,我要去创造一个猫,还要实例化,来一只狗,我要创建一只狗,同样要实例化,还要配备专门的店小二去接待,就会相当麻烦 |
产品类: abstract class BMW { public BMW(){ } } public class BMW320 extends BMW { public BMW320() { System.out.println("制造-->BMW320"); } } public class BMW523 extends BMW{ public BMW523(){ System.out.println("制造-->BMW523"); } } 工厂类: public class Factory { public BMW createBMW(int type) { switch (type) { case 320: return new BMW320(); case 523: return new BMW523(); default: break; } return null; } } public class Customer { public static void main(String[] args) { Factory factory = new Factory(); BMW bmw320 = factory.createBMW(320);//有“父类引用指向子类对象” BMW bmw523 = factory.createBMW(523); } } |
产品类: abstract class BMW { public BMW(){ } } public class BMW320 extends BMW { public BMW320() { System.out.println("制造-->BMW320"); } } public class BMW523 extends BMW{ public BMW523(){ System.out.println("制造-->BMW523"); } } interface FactoryBMW { //把工厂类也抽象了。 BMW createBMW(); } public class FactoryBMW320 implements FactoryBMW{ @Override public BMW320 createBMW() { return new BMW320(); } } public class FactoryBMW523 implements FactoryBMW { @Override public BMW523 createBMW() { return new BMW523(); } } public class Customer { public static void main(String[] args) { FactoryBMW320 factoryBMW320 = new FactoryBMW320(); BMW320 bmw320 = factoryBMW320.createBMW(); FactoryBMW523 factoryBMW523 = new FactoryBMW523(); BMW523 bmw523 = factoryBMW523.createBMW(); } } |
抽象工厂模式代码 产品类:
//车子以及型号 abstract class BMW { public BMW(){ } } public class BMW320 extends BMW { public BMW320() { System.out.println("制造-->BMW320"); } } public class BMW523 extends BMW{ public BMW523(){ System.out.println("制造-->BMW523"); } } //空调以及型号 public class Aircondition { public Aircondition(){ } } public class AirconditionA extends Aircondition{ public AirconditionA(){ System.out.println("制造-->AirconditionA"); } } public class AirconditionB extends Aircondition{ public AirconditionB(){ System.out.println("制造-->AirconditionB"); } } //创建工厂的接口 public interface FactoryBMW { BMW createBMW_A(); BMW createBMW_B(); Aircondition createaAirconditionA(); Aircondition createaAirconditionB(); } //宝马320系列,生产配置A,B两种空调型号的320汽车 public class FactoryBWM320 implements FactoryBMW{ @Override public BMW320 createBMW_A() { // TODO Auto-generated method stub createaAirconditionA(); return new BMW320(); } @Override public BMW320 createBMW_B() { // TODO Auto-generated method stub createaAirconditionB(); return new BMW320(); } @Override public Aircondition createaAirconditionA() { // TODO Auto-generated method stub return new AirconditionA(); } @Override public Aircondition createaAirconditionB() { // TODO Auto-generated method stub return new AirconditionB(); } } //宝马523系列,生产配置A,B两种空调型号的523汽车 public class FactoryBWM523 implements FactoryBMW { @Override public BMW523 createBMW_A() { // TODO Auto-generated method stub createaAirconditionA(); return new BMW523(); } @Override public BMW523 createBMW_B() { // TODO Auto-generated method stub createaAirconditionB(); return new BMW523(); } @Override public Aircondition createaAirconditionA() { // TODO Auto-generated method stub return new AirconditionA(); } @Override public Aircondition createaAirconditionB() { // TODO Auto-generated method stub return new AirconditionB(); } } public class Customer { public static void main(String[] args){ //想要A型空调宝马320 FactoryBWM320 factoryBWM320_A = new FactoryBWM320(); BMW320 bmw320_A = factoryBWM320_A.createBMW_A(); //想要B型空调宝马320 FactoryBWM320 factoryBWM320_B = new FactoryBWM320(); BMW320 bmw320_B = factoryBWM320_B.createBMW_B(); //想要A型空调宝马523 FactoryBWM523 factoryBWM523_A = new FactoryBWM523(); BMW523 bmw523_A = factoryBWM523_A.createBMW_A(); //想要B型空调宝马523 FactoryBWM523 factoryBWM523_B = new FactoryBWM523(); BMW523 bmw523_B = factoryBWM523_B.createBMW_B(); } } |