简单工厂:
package Sample_Factory;
//抽象产品类
abstract class Weapon{
abstract void display();//显示兵器名称
}
//具体产品类
class MachineGun extends Weapon{
@Override
void display(){
System.out.println("机光枪");
}
}
class Pistol extends Weapon{
@Override
void display(){
System.out.println("手枪");
}
}
//工厂类
class WeaponFactory{
//静态方法生产武器,参数表示武器类型
public static Weapon creatWeapon(String type){
Weapon w =null;
switch(type){
case "手枪":
w = new Pistol();
break;
case "机关枪":
w = new MachineGun();
break;
default:
System.out.println("不能生产该兵器"+type);
}
return w;
}
}
//客户端
public class DemoP{
public static void main(String[] args){
Weapon pistol = WeaponFactory.creatWeapon("手枪");
pistol.display();
Weapon mg= WeaponFactory.creatWeapon("机关枪");
mg.display();
}
}
工厂模式
package Factory;
//抽象产品类
abstract class Weapon{
abstract void display();//显示兵器名称
}
//具体产品类
class MachineGun extends Weapon{
@Override
void display(){
System.out.println("机光枪");
}
}
class Pistol extends Weapon{
@Override
void display(){
System.out.println("手枪");
}
}
class SniperRifle extends Weapon{
@Override
void display(){
System.out.println("狙击步枪!!!");
}
}
//武器工厂接口
interface WeaponFactory{
Weapon createWeapon();
}
//创建手枪工厂
class PistolFactory implements WeaponFactory{
@Override
public Weapon createWeapon(){
return new Pistol(); //返回手枪
}
}
//创建机关枪工厂
class MachineGunFactory implements WeaponFactory{
@Override
public Weapon createWeapon(){
return new MachineGun(); //返回机关枪
}
}
//创建狙击步枪工厂
class SniperRifleFactory implements WeaponFactory{
@Override
public Weapon createWeapon(){
return new SniperRifle(); //返回机关枪
}
}
//客户端
public class DemoP{
public static void main(String[] args){
//兵器工厂生产机关枪
WeaponFactory wf1=new MachineGunFactory();
Weapon w1 = wf1.createWeapon();//制造机关枪
w1.display();
//兵器工厂生产手枪
WeaponFactory wf2=new PistolFactory();
Weapon w2 = wf2.createWeapon();//制造手枪
w2.display();
WeaponFactory wf3=new SniperRifleFactory();
Weapon w3 = wf3.createWeapon();//制造手枪
w3.display();
}
}
依赖倒置原则
package dip;
public class Demo {
public static void main(String[] args) {
AutoRead ar = new AutoRead();
ar.read(new DocRead());
ar.read(new TXTRead());
ar.read(new XMLRead());
}
}
package dip;
public class DocRead implements Readable {
@Override
public void read() {
System.out.println("读取 doc 文件");
}
}
package dip;
public interface Readable {
void read();
}
package dip;
public class TXTRead implements Readable{
@Override
public void read() {
System.out.println("读取 txt 文件");
}
}
package dip;
public class XMLRead implements Readable{
@Override
public void read() {
System.out.println("读取 xml 文件");
}
}
package dip;
public class AutoRead {
public void read(Readable r) {
r.read();
}
}
开闭原则
package open;
public class Demo {
public static void main(String[] args) {
CarNavigation byd = new CarNavigation();
byd.start();
byd.run();
byd.stop();
System.out.println("---没有导航的汽车---");
Car qq = new Car();
qq.start();
qq.run();
qq.stop();
}
}
package open;
public class CarNavigation extends Car {
private void navigate() {
System.out.println("开始导航!");
}
public void run() {
this.navigate();
System.out.println("汽车跟着导航行驶!");
}
}
package open;
public class Car {
public void start() {
System.out.println("启动汽车");
}
public void run() {
System.out.println("汽车在行驶");
}
public void stop() {
System.out.println("停车");
}
}
单一原则
package positive;
public class DBUtil {
public void getConnection(String uri) {
System.out.println("与" + uri + "连接");
}
}
package positive;
public class StudentDAO {
private DBUtil db;
public StudentDAO(DBUtil db) {
super();
this.db = db;
}
public void searchStudent(String confition) {
System.out.println("根据" + confition + "查询学生");
}
public void deleteStuent(String condition) {
System.out.println("根据" + condition + "删除学生");
}
}
package positive;
public class Demo {
public static void main(String[] args) {
DBUtil db = new DBUtil();
StudentDAO dao = new StudentDAO(db);
StudentManager sm = new StudentManager(dao);
db.getConnection("MySQL");
dao.searchStudent("孙悟空");
sm.display();
}
}
package positive;
public class StudentManager {
private StudentDAO dao;
public StudentManager(StudentDAO dao) {
super();
this.dao = dao;
}
public void display() {
System.out.println("显示学生信息");
}
}