You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on Feb 2, 2019. It is now read-only.
package demo2;
public class Test {
public static void main(String[] agrs) {
Shape circle = (Circle)ShapeFactory2.getClass(Circle.class);
circle.draw();
}
}
工厂方法
每个对象有对应的工厂,将原先的工厂拆分。
package demo2;
public class CircleFactory implements Factory{
@Override
public Shape getShape() {
return new Circle();
}
}
package demo2;
public class RectangleFactory implements Factory{
@Override
public Shape getShape() {
return new Rectangle();
}
}
package demo2;
public class SquareFactory implements Factory{
@Override
public Shape getShape() {
return new Square();
}
}
package demo2;
public class Test {
public static void main(String[] agrs) {
Factory circleFactory = new CircleFactory();
Shape circle = circleFactory.getShape();
circle.draw();
}
}
抽象工厂
两个抽象接口,一个为产品,一个为工厂,进行生产
产品
枪
public interface Gun{
public void shooting();
}
子弹
public interface Bullet{
public void load();
}
ak类
public class AK implements Gun{
@Override
public void shooting(){};
}
对应子弹
public class AK_Bullet implements Bullet{
@Override
public void load(){};
}
m4
public class M4 implements Gun{
@Override
public void shooting(){};
}
对应子弹
public class M4_Bullet implements Bullet{
@Override
public void load(){};
}
工厂
public interface Factory{
public Gun produceGun();
public Bullet produceBullet();
}
具体工厂
ak
public class AK_Factory implements Factory {
@Override
public Gun produceGun(){
return new AK();
}
@Override
public Bullet produceBullet(){
return new AK_Bullete();
}
}
M4
public class M4_Factory implements Factory{
@Override
public Gun produceGun(){
return new M4();
}
@Override
public Bullet produceBullet(){
return new M4_Bullet();
}
}
设计模式-创建型模式-工厂模式(工厂三兄弟)
工厂模式分为简单工厂,工厂方法,抽象工厂。
简单工厂模式
一个接口,三个具体类,一个工厂,通过选择,生产出对应的对象。
利用反射改进工厂模式
由于违反开放-封闭原则,每次都要去修改源代码,所以直接使用反射机制。
将类传入,使用泛型+反射,生产出对象。
工厂方法
每个对象有对应的工厂,将原先的工厂拆分。
抽象工厂
两个抽象接口,一个为产品,一个为工厂,进行生产
产品
枪
子弹
ak类
对应子弹
m4
对应子弹
工厂
具体工厂
ak
M4
www.iming.info
The text was updated successfully, but these errors were encountered: